home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 5 / Gekikoh Dennoh Club Vol. 5 (Japan).7z / Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin / internet / webx / webxp040.lzh / Source / textview.s < prev    next >
Text File  |  1998-09-27  |  49KB  |  2,424 lines

  1. *    textview.s
  2.  
  3.     .include    IOCSCALL.MAC
  4.     .include    WebXpression.inc
  5.     .include    draw_mouse.inc
  6.  
  7.     .xdef    _DispAll,_DispBack,_ClearText,_ClearText01
  8.     .xdef    _TextVdisp
  9.     .xdef    _ms_pos,_ms_pos_x,_ms_pos_y
  10.     .xdef    _in_link_num
  11.     .xdef    draw1_loop    *! debug
  12.  
  13.     .xref    put_6x12_jt,put_12x12_jt
  14.     .xref    put_8x16_jt,put_16x16_jt
  15.     .xref    draw_mouse_cursor
  16.     .xref    _disp_xptext
  17.     .xref    _d_option,_hold_online
  18.     .xref    _quit_flag,_freeze
  19.     .xref    _from_network
  20.     .xref    _color_mode,_config_color,_html_color
  21.  
  22.     .xref    _key_repeat_1st,_key_repeat_2nd
  23.  
  24.  
  25. GVRAM        equ    $c0_0000
  26. TEXTVRAM    equ    $e0_0000
  27. TEXTPALET    equ    $e8_2200
  28. CRTC_R12    equ    $e8_0018
  29. CRTC_R21    equ    $e8_002a
  30. CRTC_R22    equ    $e8_002c
  31. CRTC_R23    equ    $e8_002e
  32. CRTC_PORT    equ    $e8_0480    * CRTC ô«ì∞É▌ÆΦâ|ü[âg
  33. GPIP_DATA    equ    $e8_8001
  34.  
  35. NEXT_LINE    equ    128    * éPâëâCâôéáé╜éΦé╠âoâCâgÉö
  36. DISP_Y        equ    32    * ò\ĪìsÉö
  37. DISP_X_OFFSET    equ    8    * âXâNâìü[âïòöé≡é╕éτé╡é─ò\Īé╖éΘâIâtâZâbâg
  38.  
  39. OP_NON    equ    0
  40. OP_FORWARD    equ    1
  41. OP_BACKWARD    equ    2
  42. OP_FASTFORWARD    equ    3
  43. OP_FASTBACKWARD    equ    4
  44. OP_PAGEFORWARD    equ    5
  45. OP_PAGEBACKWARD    equ    6
  46. OP_PAGETOP    equ    7
  47. OP_PAGEEND    equ    8
  48. OP_OTHERS        equ    255
  49.  
  50. MOUSE_MIN_X    equ    8
  51. MOUSE_MAX_X    equ    768-8
  52. MOUSE_MIN_Y    equ    8
  53. MOUSE_MAX_Y    equ    512
  54.  
  55.  
  56.     .text
  57.     .even
  58.  
  59.  
  60. ****************************************************************
  61. *    éPìsò\Īâïü[â`âô
  62.         * æ¼ôxì┼ùDɵé╠é╜é▀âîâWâXâ^ò█æ╢é╚é╡üI
  63.         * âXü[âpü[é┼î─é╘é▒é╞
  64. draw1:        * in  : a5.l = ìsè╟ù¥âeü[âuâï
  65.         *    a2.l = ò\Īé╖éΘ TEXTVRAM ì╢Æ[é╠âAâhâîâX
  66.         *    a3.l = ò\Īé╖éΘ GVRAM ì╢Æ[é╠âAâhâîâX
  67.         *    d5.l =  bit31 : = 1 Ä└ì█é╔ò\Īé╡é╚éóüiâhâbâgÉöé≡ÉöéªéΘé╛é»üj
  68.         *            bit30~16 : â}âEâXâJü[â\âï X ì└òW
  69.         *        bit15~0 = ò\Īé╖éΘ TEXTVRAM Åπé╠âhâbâgÉö 0~15
  70.         *    image_table_ptr : xptexp->image_table é≡É▌ÆΦé╡é─é¿é¡é▒é╞
  71.         *    link_table_ptr : xptexp->link_table é≡É▌ÆΦé╡é─é¿é¡é▒é╞
  72.         * out : d0.w = âèâôâNÆåé╚éτ =1 üid5.l<0 Ä₧üj
  73.  
  74.     move.w    CRTC_R21,-(sp)
  75.     move.w    #%11_00010000,CRTC_R21    * âeâLâXâgëµû╩ô»Ä₧âAâNâZâXüiìòé┼ò`ëµüj
  76.     movem.l    a2-a3,a2_work    * `Dxxx` `Gxxxx` é╠îvÄZé╔òKùv
  77.     move.w    d5,d5_work    *    üV
  78.  
  79.     move.w    start_dot(a5),d7    * d7.w = ëµû╩ì╢Æ[é⌐éτé╠âhâbâgÉö
  80.                     * üiÿ_ù¥éO : DISP_X_OFFSET é≡è▄é▄é╚éóüj
  81.     moveq.l    #6,d6        * d6.w = âtâHâôâgâTâCâYüiæSèpé═é▒é╠éQö{üj
  82.                 *    b31 = ë║ÉⁿâtâëâO
  83.  
  84.     movea.l    ptr(a5),a4    * a4.l = âeâLâXâgé╓é╠â|âCâôâ^
  85.     movea.l    a4,a3
  86.     adda.w    num(a5),a3    * a3.l = é▒é▒é▄é┼Åêù¥é╖éΘ
  87.     clr.w    in_link
  88.  
  89.     move.l    a4,d0        * öOé╠é╜é▀âGâëü[â`âFâbâN
  90.     beq    draw1_err    *
  91.     cmpa.l    a4,a3        *
  92.     bls    draw1_err    *
  93.  
  94.     add.w    start_dot(a5),d5
  95. @@:    cmpi.w    #16,d5
  96.     bcs    @f
  97.     addq.w    #2,a2
  98.     subi.w    #16,d5
  99.     bra    @b
  100. @@:
  101.  
  102.  
  103. draw1_loop:
  104.     cmpa.l    #$e11000,a2    * öOé╠é╜é▀ a2.l é╠Ælé≡â`âFâbâN
  105.     bcc    draw1_err2
  106.  
  107.     moveq.l    #0,d1
  108.     move.b    (a4)+,d1    * d1.w = ò╢ÄÜâRü[âh
  109.     bpl    draw1_ö╝èpæOö╝    * $00~$7f é═ö╝èpæOö╝
  110.  
  111.     cmpi.b    #$a0,d1
  112.     bcs    @f
  113.     cmpi.b    #$df,d1        * $a0-$df é═ö╝èpîπö╝
  114.     bls    draw1_ö╝èpîπö╝
  115. @@:
  116.     move.b    d1,-(sp)    * lsl.w #8,d1 éµéΦæ¼éóé┴é─ùßé╠âäâc
  117.     move.w    (sp)+,d1    *
  118.     move.b    (a4)+,d1    * d1.w = ò╢ÄÜâRü[âh
  119.  
  120.     cmpi.w    #$80ff,d1
  121.     bls    draw1_éQâoâCâgö╝èp    * $80xx é═éQâoâCâgö╝èp
  122.     cmpi.w    #'êƒ',d1
  123.     bcs    draw1_æSèpö±è┐ÄÜ
  124.     cmpi.w    #'ÿƒ',d1
  125.     bcs    draw1_æSèpæµéPÉàÅÇ
  126.     cmpi.w    #'Ωó',d1
  127.     bls    draw1_æSèpæµéQÉàÅÇ
  128.     cmpi.w    #$f3ff,d1
  129.     bls    draw1_éQâoâCâgö╝èp    * $f0xx-$f3xx é═éQâoâCâgö╝èp
  130.  
  131.     bra    draw1_next    * é▒é▒é╔é═ùêé╚éóânâY
  132.  
  133. ****    ****
  134. draw1_jmp:            * âWâââôâvâeü[âuâïé╔Å]é┴é─ò¬è≥
  135.                 * in  : d0.w = âtâHâôâgÄφù▐
  136.                 *    a0.l = âWâââôâvâeü[âuâï
  137.     moveq.l    #0,d0        *! debug
  138.     add.w    d0,d0
  139.     move.w    (a0,d0.w),d0
  140.     jmp    (a0,d0.w)    * ò¬è≥üiò¬è≥é╡é╜îπé═ draw1_next é╔ïAé┴é─é¡éΘüj
  141.                 * out : d0.w = ò╢ÄÜé╠âhâbâgÉö
  142. ****    ****
  143. draw1_next:
  144.     add.w    d0,d5
  145.     add.w    d0,d7
  146. 1:    cmpi.w    #16,d5
  147.     bcs    2f
  148.     addq.w    #2,a2
  149.     subi.w    #16,d5
  150.     bra    1b
  151. 2
  152.     tst.l    d5
  153.     bpl    3f
  154.             * d5.l < 0 üiâhâbâgÉöÉöéªâéü[âhüjÄ₧é╠Åêù¥
  155.     move.l    d5,d1
  156.     swap.w    d1
  157.     andi.w    #$7fff,d1
  158.     move.w    d7,d0
  159.     add.w    d5_work,d0
  160.     cmp.w    d1,d0
  161.     bcs    3f
  162.     cmp.w    start_dot(a5),d1    * â}âEâXâJü[â\âï X < start_dot é╛é┴é╜éτ
  163.     bcs    3f
  164.     move.w    in_link,d0
  165.     bra    draw1_rts
  166. 3:
  167.     cmpa.l    a4,a3
  168.     bne    draw1_loop
  169.     moveq.l    #0,d0        * ìsé╠ëEÆ[ < â}âEâXâJü[â\âï X ì└òWé╚éτé═é╕éΩ
  170.     move.w    d0,in_link
  171. draw1_rts:
  172.     move.w    (sp)+,CRTC_R21    * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
  173.     rts
  174.  
  175.  
  176. draw1_err:
  177.     moveq.l    #0,d0        * ìsé╠ëEÆ[ < â}âEâXâJü[â\âï X ì└òWé╚éτé═é╕éΩ
  178.     move.w    d0,in_link
  179.     bra    draw1_rts
  180.  
  181. draw1_err2:    *! debug
  182.     moveq.l    #0,d0
  183.     move.w    d0,in_link
  184.     move.b    #125,_quit_flag        * err_abort
  185.     bra    draw1_rts
  186.  
  187.  
  188.     .bss
  189.     .even
  190. a2_work:    .ds.l    1
  191. a3_work:    .ds.l    1
  192. d5_work:    .ds.w    1
  193. in_link:    .ds.w    1
  194. _in_link_num:        .ds.w    1
  195.  
  196. link_table_ptr:        .ds.l    1
  197. image_table_ptr:    .ds.l    1
  198. gr_y:            .ds.w    1    * GVRAM é╠ y ì└òW
  199. g_work_image_no:    .ds.w    1
  200. g_work_hh:        .ds.w    1
  201. g_work_y_offset:    .ds.l    1
  202. g_work_disp_x:        .ds.w    1
  203.  
  204. font_work:    .ds.b    3*24    * ë║Éⁿé≡ê°éóé╜éΦé╖éΘÅêù¥ùpâÅü[âN
  205.                 * 24x24 âhâbâgé▄é┼æσÅΣòvé╚ânâY
  206.     .text
  207.     .even
  208.  
  209.  
  210. ****************************************************************
  211.  
  212.  
  213. draw1_ö╝èpæOö╝:
  214.     cmpi.b    #$09,d1
  215.     beq    draw1_tab
  216. *    cmpi.b    #$0d,d1
  217. *    beq    draw1_cr
  218. *    cmpi.b    #$0a,d1
  219. *    beq    draw1_lf
  220. *    cmpi.b    #$1a,d1
  221. *    beq    draw1_rts
  222.  
  223.     cmpi.b    #'`',d1
  224.     bne    @f
  225.     cmpi.b    #'`',(a4)    * `` é╛é┴é╜ÅΩìçé═é╗é╠é▄é▄æfÆ╩éΦ
  226.     bne    draw1_cmd    * é╗éñé┼é╚é»éΩé╬ `Lnn` é╠éµéñé╚âRâ}âôâh
  227.     addq.w    #1,a4        *
  228. @@:
  229.     moveq.l    #0,d0
  230. *    move.b    dw_han0_font(a6),d0
  231.     moveq.l    #0,d0            * âtâHâôâgÄφù▐
  232.     lea.l    draw1_ö╝èpæOö╝_6x12_jt(pc),a0
  233.     cmpi.b    #6,d6
  234.     beq    draw1_jmp
  235.     lea.l    draw1_ö╝èpæOö╝_8x16_jt(pc),a0
  236.     cmpi.b    #8,d6
  237.     beq    draw1_jmp
  238. *    lea.l    draw1_ö╝èpæOö╝_mp_jt(pc),a0
  239.     bra    draw1_jmp
  240.  
  241.  
  242. draw1_tab:
  243.     sub.w    start_dot(a5),d7
  244.     addi.w    #6*8,d7        * tab é╠âhâbâgÉö
  245.     swap.w    d7
  246.     clr.w    d7        * öOé╠é╜é▀Åπê╩âÅü[âhé≡âNâèâA
  247.     swap.w    d7
  248.     divu.w    #6*8,d7
  249.     mulu.w    #6*8,d7
  250.     swap.w    d7
  251.     clr.w    d7        * öOé╠é╜é▀Åπê╩âÅü[âhé≡âNâèâA
  252.     swap.w    d7
  253.     add.w    start_dot(a5),d7    * d7.w =
  254.  
  255.     move.w    d7,d5
  256.     add.w    d5_work,d5
  257.     move.w    d5,d0
  258.     lsr.w    #4,d0
  259.     add.w    d0,d0
  260.     movea.l    a2_work,a2
  261.     adda.w    d0,a2        * a2.w =
  262.     andi.w    #15,d5        * d5.w =
  263.     moveq.l    #0,d0
  264.     bra    draw1_next
  265.  
  266.  
  267. draw1_cmd:
  268.     moveq.l    #0,d0        * draw1_next é╠ê°é½Éö
  269.     move.b    (a4)+,d1
  270.     cmpi.b    #'`',d1
  271.     beq    draw1_next
  272.     cmpi.b    #'S',d1
  273.     beq    draw1_cmd_s
  274.     cmpi.b    #'D',d1
  275.     beq    draw1_cmd_d
  276.     cmpi.b    #'L',d1
  277.     beq    draw1_cmd_l
  278.     cmpi.b    #'l',d1
  279.     beq    draw1_cmd_ls
  280.     cmpi.b    #'G',d1
  281.     beq    draw1_cmd_g
  282.     cmpi.b    #'U',d1
  283.     beq    draw1_cmd_u
  284.     cmpi.b    #'u',d1
  285.     beq    draw1_cmd_us
  286.     cmpi.b    #'E',d1
  287.     beq    draw1_cmd_e
  288.     bra    draw1_cmd
  289.  
  290. draw1_cmd_s:        * `Sxx`
  291.     bsr    get_word_num    * d0.w = `Sx` é╠ÉöÆlòö
  292.     move.b    d0,d6
  293.     bra    draw1_cmd
  294.  
  295.  
  296. draw1_cmd_d:        * `Dxxx`
  297.     bsr    get_word_num    * d0.w = `Dxxx` é╠ÉöÆlòö
  298.  
  299.     move.w    d0,d5
  300.     add.w    start_dot(a5),d5
  301.     move.w    d5,d7        * d7.w =
  302.     add.w    d5_work,d5
  303.     move.w    d5,d0
  304.     lsr.w    #4,d0
  305.     add.w    d0,d0
  306.     movea.l    a2_work,a2
  307.     adda.w    d0,a2        * a2.w =
  308.     andi.w    #15,d5        * d5.w =
  309.     bra    draw1_cmd
  310.  
  311.  
  312. draw1_cmd_l:        * `L`
  313.     move.w    #1,in_link
  314.  
  315.     bsr    get_word_num    * d0.w = `Lxxxx` é╠ÉöÆlòö
  316.  
  317.     tst.l    d5
  318.     bmi    draw1_cmd_l_count
  319.  
  320.             * ò\ĪÄ₧
  321.     mulu.w    #link_table_size,d0
  322.     movea.l    link_table_ptr,a0
  323.     tst.b    link_table_in_cache(a0,d0.w)
  324.     beq    @f
  325.     move.w    #%11_00010000,CRTC_R21    * âeâLâXâgëµû╩ô»Ä₧âAâNâZâXüiìòé┼ò`ëµüj
  326.     bra    draw1_cmd
  327. @@:    move.w    #%11_00110000,CRTC_R21    * âeâLâXâgëµû╩ô»Ä₧âAâNâZâXüiÉ╘é┼ò`ëµüj
  328.     bra    draw1_cmd
  329.  
  330. draw1_cmd_l_count:    * âhâbâgÉöéªâéü[âhÄ₧
  331.     move.w    d0,_in_link_num
  332.     bra    draw1_cmd
  333.  
  334.  
  335. draw1_cmd_ls:        * `l`    l-small é╛é⌐éτ ls é╦
  336.     tst.l    d5
  337.     bmi    draw1_cmd_ls_count
  338.             * ò\ĪÄ₧
  339.     move.w    #%11_00010000,CRTC_R21    * âeâLâXâgëµû╩ô»Ä₧âAâNâZâXüiìòé┼ò`ëµüj
  340.     bra    draw1_cmd
  341. draw1_cmd_ls_count:    * âhâbâgÉöéªâéü[âhÄ₧
  342.     clr.w    in_link
  343.     clr.w    _in_link_num
  344.     bra    draw1_cmd
  345.  
  346.  
  347. draw1_cmd_g:        * `Gnnnn`
  348.     bsr    get_word_num    * d0.w = `Gnnnn` é╠ nnnnüiâCâüü[âWö╘ìåüj
  349.     addq.w    #1,a4
  350.     move.w    d0,d2
  351.     move.w    d0,g_work_image_no
  352.     bsr    get_word_num    * d0.w = `Gnnnn,hh` é╠ hh
  353.     addq.w    #1,a4
  354.     move.w    d0,g_work_hh
  355.     bsr    get_long_hex    * d0.w = `Gnnnn,hh,yyyyyyyy` é╠ yyyyyyyy
  356.     move.l    d0,g_work_y_offset
  357.  
  358.     move.w    d2,d0
  359.     tst.l    d5
  360.     bmi    draw1_cmd_g_count
  361.  
  362.     movea.l    image_table_ptr,a0
  363.     mulu.w    #image_table_size,d0
  364.     movea.l    image_table_image_list(a0,d0.l),a1    * a1.l = âCâüü[âWâèâXâg
  365.     move.w    image_table_disp_x(a0,d0.l),d4    * d4.w = disp_x
  366.     move.w    d4,g_work_disp_x
  367.  
  368.     move.w    CRTC_R21,-(sp)    * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
  369.     move.w    #%11_00100000,CRTC_R21    * âeâLâXâgëµû╩ô»Ä₧âAâNâZâXüiôºû╛é┼ò`ëµüj
  370.  
  371.             * âeâLâXâgëµû╩é╔üuîèüvé≡èJé»éΘ
  372.             * üié▒é▒é⌐éτâOâëâtâBâbâNëµû╩é¬ôºé»é─î⌐éªéΘüj
  373.     tst.w    d5
  374.     beq    draw1_cmd_g_16
  375.  
  376.     moveq.l    #16,d0
  377.     sub.w    d5,d0
  378.     cmp.w    d0,d4
  379.     blt    draw1_cmd_g_mini
  380.     sub.w    d0,d4
  381.  
  382.     move.w    d5,d0
  383.     add.w    d0,d0
  384.     lea.l    draw1_cmd_g_mask,a0
  385.     move.w    (a0,d0.w),CRTC_R23    * âeâLâXâgâ}âXâN
  386.  
  387.     move.w    g_work_hh,d0
  388.     mulu.w    #6,d0
  389.     jmp    @f(pc,d0.w)
  390. @@:
  391.     .irp    %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
  392.     move.w    #-1,NEXT_LINE*%A.w(a2)
  393.     .endm
  394.     addq.w    #2,a2
  395.     moveq.l    #0,d5
  396.     bra    draw1_cmd_g_16
  397.  
  398.  
  399. draw1_cmd_g_mini:        * éPë±é┼ò`ëµé┼é½é─16âhâbâgê╚ë║é╠ÅΩìç
  400.     move.w    d4,d0
  401.     add.w    d0,d0
  402.     lea.l    draw1_cmd_g_mask,a0
  403.     move.w    (a0,d0.w),d0
  404.     not.w    d0
  405.     ror.w    d5,d0
  406.     move.w    d0,CRTC_R23    * âeâLâXâgâ}âXâN
  407.  
  408.     move.w    g_work_hh,d0
  409.     mulu.w    #6,d0
  410.     jmp    @f(pc,d0.w)
  411. @@:    .irp    %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
  412.     move.w    #-1,NEXT_LINE*%A.w(a2)
  413.     .endm
  414.     add.w    d4,d5
  415.     bra    draw1_cmd_g_text_end
  416.  
  417.  
  418. draw1_cmd_g_16:
  419.     clr.w    CRTC_R23    * âeâLâXâgâ}âXâN
  420.     move.w    g_work_hh,d0
  421.     mulu.w    #6,d0
  422.     lea.l    2f(pc,d0.w),a0
  423.  
  424. 1:    cmpi.w    #16,d4
  425.     blt    draw1_cmd_g_last
  426.     jmp    (a0)
  427. 2:    .irp    %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
  428.     move.w    #-1,NEXT_LINE*%A.w(a2)
  429.     .endm
  430.     addq.w    #2,a2
  431.     subi.w    #16,d4
  432.     bra    1b
  433.  
  434. draw1_cmd_g_last:
  435.     move.w    d4,d0
  436.     add.w    d0,d0
  437.     lea.l    draw1_cmd_g_mask,a0
  438.     move.w    (a0,d0.w),d0
  439.     not.w    d0
  440.     move.w    d0,CRTC_R23    * âeâLâXâgâ}âXâN
  441.  
  442.     move.w    g_work_hh,d0
  443.     mulu.w    #6,d0
  444.     jmp    @f(pc,d0.w)
  445. @@:    .irp    %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
  446.     move.w    #-1,NEXT_LINE*%A.w(a2)
  447.     .endm
  448.     move.w    d4,d5
  449.     bra    draw1_cmd_g_text_end
  450.  
  451.     .data
  452.     .even
  453. draw1_cmd_g_mask:
  454.     .dc.w    %00000000_00000000
  455.     .dc.w    %10000000_00000000
  456.     .dc.w    %11000000_00000000
  457.     .dc.w    %11100000_00000000
  458.     .dc.w    %11110000_00000000
  459.     .dc.w    %11111000_00000000
  460.     .dc.w    %11111100_00000000
  461.     .dc.w    %11111110_00000000
  462.     .dc.w    %11111111_00000000
  463.     .dc.w    %11111111_10000000
  464.     .dc.w    %11111111_11000000
  465.     .dc.w    %11111111_11100000
  466.     .dc.w    %11111111_11110000
  467.     .dc.w    %11111111_11111000
  468.     .dc.w    %11111111_11111100
  469.     .dc.w    %11111111_11111110
  470.  
  471.     .text
  472.     .even
  473. draw1_cmd_g_text_end:
  474.  
  475.             * âOâëâtâBâbâNëµû╩é╔ò`ëµé╖éΘ
  476.     movem.l    d1-d7/a0-a5,-(sp)
  477.     movea.l    a3_work,a0
  478.  
  479.     move.w    d7,d0        * d0.w = ëµû╩ì╢Æ[é⌐éτé╠âhâbâgÉö
  480.     add.w    d0,d0
  481.     adda.w    d0,a0        * a0.l = ò\Īé╖éΘ GVRAM Åπé╠âAâhâîâX
  482.  
  483.     movea.l    image_list_data(a1),a2
  484.     cmpa.l    #1,a2        * = !NULL é╠Ä₧é═âfü[â^é¬û│éó
  485.     beq    draw1_cmd_g_clear    * üiô╟é▀é╚é⌐é┴é╜é╞é⌐üj
  486.     move.l    a2,d0        * = NULL é╠Ä₧éαâfü[â^é¬é╚éó
  487.     beq    draw1_cmd_g_clear    * üié▄é╛ô╟é±é┼éóé╚éóüj
  488.     adda.l    g_work_y_offset,a2
  489.     move.w    g_work_hh,d0
  490.     bne    1f
  491.  
  492.     moveq.l    #16-1,d2    * d2.w = âïü[âvë±Éö
  493.     bra    2f
  494. 1:
  495.     moveq.l    #16-1,d2
  496.     sub.w    d0,d2        * d2.w = âïü[âvë±Éö
  497.     mulu.w    #512*2,d0
  498.     adda.l    d0,a0
  499. 2:
  500.  
  501. draw1_cmd_g_trans_y_loop:    * âOâëâtâBâbâNëµû╩é╔ô]æù
  502.     move.w    g_work_disp_x,d0    * d0.w = disp_x
  503.  
  504.     move.w    d0,d1
  505.     lsr.w    #5,d0
  506.     beq    draw1_cmd_g_trans_x_2
  507.  
  508.     subq.w    #1,d0
  509. draw1_cmd_g_trans_x_1:
  510.     movem.l    (a2)+,d3-d7/a3-a5
  511.     movem.l    d3-d7/a3-a5,(a0)
  512.     movem.l    (a2)+,d3-d7/a3-a5
  513.     movem.l    d3-d7/a3-a5,32(a0)
  514.     lea.l    64(a0),a0
  515.     dbra    d0,draw1_cmd_g_trans_x_1
  516. draw1_cmd_g_trans_x_2:
  517.     andi.w    #31,d1
  518.     beq    draw1_cmd_g_trans_x_4
  519.     subq.w    #1,d1
  520. draw1_cmd_g_trans_x_3:
  521.     move.w    (a2)+,(a0)+
  522.     dbra    d1,draw1_cmd_g_trans_x_3
  523. draw1_cmd_g_trans_x_4:
  524.  
  525.     move.w    #512,d0
  526.     sub.w    g_work_disp_x,d0
  527.     add.w    d0,d0
  528.     adda.w    d0,a0
  529.  
  530.     move.w    image_list_x(a1),d0
  531.     sub.w    g_work_disp_x,d0
  532.     add.w    d0,d0
  533.     adda.w    d0,a2
  534.  
  535.     dbra    d2,draw1_cmd_g_trans_y_loop
  536.  
  537. draw1_cmd_g_rts:
  538.     movem.l    (sp)+,d1-d7/a0-a5
  539.  
  540.     move.w    (sp)+,CRTC_R21    * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
  541.     move.w    g_work_image_no,d0
  542.     movea.l    image_table_ptr,a0
  543.     mulu.w    #image_table_size,d0
  544.     add.w    image_table_disp_x(a0,d0.l),d7
  545.     bra    draw1_cmd
  546.  
  547.  
  548.             * âfü[â^é¬é╚é⌐é┴é╜é╠é┼âOâëâtâBâbâNëµû╩é≡âNâèâA
  549. draw1_cmd_g_clear:
  550.     move.w    g_work_hh,d0
  551.     bne    1f
  552.  
  553.     moveq.l    #16-1,d2    * d2.w = âïü[âvë±Éö
  554.     bra    2f
  555. 1:
  556.     moveq.l    #16-1,d2
  557.     sub.w    d0,d2        * d2.w = âïü[âvë±Éö
  558.     mulu.w    #512*2,d0
  559.     adda.l    d0,a0
  560. 2:
  561.     moveq.l    #0,d3
  562.     moveq.l    #0,d4
  563.     moveq.l    #0,d5
  564.     moveq.l    #0,d6
  565.     moveq.l    #0,d7
  566.     move.l    d3,a3
  567.     move.l    d3,a4
  568.     move.l    d3,a5
  569.  
  570. draw1_cmd_g_clear_y_loop:
  571. *    move.w    image_list_x(a1),d0
  572.     move.w    g_work_disp_x,d0    * d0.w = disp_x
  573.  
  574.     move.w    d0,d1
  575.     lsr.w    #5,d0
  576.     beq    draw1_cmd_g_clear_x_2
  577.  
  578.     subq.w    #1,d0
  579. draw1_cmd_g_clear_x_1:
  580.     movem.l    d3-d7/a3-a5,(a0)
  581.     movem.l    d3-d7/a3-a5,32(a0)
  582.     lea.l    64(a0),a0
  583.     dbra    d0,draw1_cmd_g_clear_x_1
  584. draw1_cmd_g_clear_x_2:
  585.     andi.w    #31,d1
  586.     beq    draw1_cmd_g_clear_x_4
  587.     subq.w    #1,d1
  588. draw1_cmd_g_clear_x_3:
  589.     move.w    d3,(a0)+
  590.     dbra    d1,draw1_cmd_g_clear_x_3
  591. draw1_cmd_g_clear_x_4:
  592.  
  593.     move.w    #512,d0
  594. *    sub.w    image_list_x(a1),d0
  595.     sub.w    g_work_disp_x,d0
  596.     add.w    d0,d0
  597.     adda.w    d0,a0
  598.  
  599.     move.w    image_list_x(a1),d0
  600.     sub.w    g_work_disp_x,d0
  601.     add.w    d0,d0
  602.     adda.w    d0,a2
  603.  
  604.     dbra    d2,draw1_cmd_g_clear_y_loop
  605.  
  606.     bra    draw1_cmd_g_rts
  607.  
  608.  
  609. draw1_cmd_g_count:        * âhâbâgÉöéªâéü[âh
  610.     move.w    g_work_image_no,d0
  611.     movea.l    image_table_ptr,a0
  612.     mulu.w    #image_table_size,d0
  613.     movea.l    image_table_image_list(a0,d0.l),a1    * a1.l = âCâüü[âWâèâXâg
  614.     move.w    image_table_disp_x(a0,d0.l),d0    * d0.w = disp_x
  615.  
  616.  
  617.     add.w    d0,d5
  618. @@:    cmpi.w    #16,d5
  619.     bcs    @f
  620.     addq.w    #2,a2
  621.     subi.w    #16,d5
  622.     bra    @b
  623. @@:
  624.     add.w    d0,d7
  625.     bra    draw1_cmd
  626.  
  627.  
  628. draw1_cmd_u:        * `U`
  629.     bset.l    #31,d6
  630.     bra    draw1_cmd
  631.  
  632. draw1_cmd_us:        * `u`
  633.     bclr.l    #31,d6
  634.     bra    draw1_cmd
  635.  
  636.  
  637. draw1_cmd_e:        * `Exx`
  638.     bsr    get_word_num    * d0.w = `Exx` é╠ÉöÆlòö
  639.  
  640.     tst.l    d5        * âhâbâgÉöéªâéü[âhüH
  641.     bmi    9f
  642. *    bra    9f
  643.  
  644.     lea.l    extended_charcter,a1
  645.     lsl.w    #5,d0
  646.     adda.w    d0,a1
  647.  
  648.     move.w    d5,d0
  649.     lea.l    put_16x16_jt(pc),a0
  650.     add.w    d0,d0
  651.     move.w    (a0,d0.w),d0
  652.     jsr    (a0,d0.w)
  653. 9:    moveq.l    #16,d0        * ò╢ÄÜé╠âhâbâgÉö
  654.     addq.w    #1,a4
  655.     bra    draw1_next
  656.  
  657.  
  658.  
  659. ****    ****
  660. get_word_num:        * ò╢ÄÜù±é≡ÉöÆlé╔ò╧è╖é╖éΘ
  661.             * in  : a4.l = ò╢ÄÜù±é╠âAâhâîâX
  662.             * out : d0.w = ÉöÆl
  663.             *    a4.l = Äƒé╠âAâhâîâX
  664.     movem.l    d1,-(sp)
  665.     moveq.l    #0,d0
  666.  
  667. @@:    moveq.l    #0,d1
  668.     move.b    (a4)+,d1
  669.     cmpi.b    #'0',d1
  670.     blt    @f
  671.     cmpi.b    #'9',d1
  672.     bgt    @f
  673.     subi.b    #'0',d1
  674.     mulu.w    #10,d0
  675.     add.w    d1,d0
  676.     bra    @b
  677. @@:
  678.     subq.w    #1,a4
  679.     movem.l    (sp)+,d1
  680.     rts
  681.  
  682.  
  683. ****    ****
  684. get_long_hex:        * 16Éiò╢ÄÜù±é≡ÉöÆlé╔ò╧è╖é╖éΘ
  685.             * in  : a4.l = ò╢ÄÜù±üi16Éiüjé╠âAâhâîâX
  686.             * out : d0.l = ÉöÆl
  687.             *    a4.l = Äƒé╠âAâhâîâX
  688.     movem.l    d1,-(sp)
  689.     moveq.l    #0,d0
  690.  
  691. 1:    moveq.l    #0,d1
  692.     move.b    (a4)+,d1
  693.     cmpi.b    #'0',d1
  694.     blt    2f
  695.     cmpi.b    #'9',d1
  696.     bgt    2f
  697.     subi.b    #'0',d1
  698.     lsl.l    #4,d0
  699.     add.l    d1,d0
  700.     bra    1b
  701. 2:
  702.     cmpi.b    #'a',d1
  703.     blt    3f
  704.     cmpi.b    #'f',d1
  705.     bgt    3f
  706.     subi.b    #'a',d1
  707.     addi.b    #10,d1
  708.     lsl.l    #4,d0
  709.     add.l    d1,d0
  710.     bra    1b
  711. 3:
  712.     subq.w    #1,a4
  713.     movem.l    (sp)+,d1
  714.     rts
  715.  
  716.  
  717. ****************************************************************
  718. draw1_ö╝èpîπö╝:
  719.     moveq.l    #0,d0
  720.     bra    draw1_next    *!debug
  721. .if    0
  722. *    moveq.l    #0,d0
  723. *    move.b    dw_han1_font(a6),d0
  724.     lea.l    draw1_ö╝èpîπö╝_6x12_jt(pc),a0
  725. *    cmpi.w    #12<<8|16,dw_x_size(a6)
  726. *    beq    draw1_jmp
  727. *    lea.l    draw1_ö╝èpîπö╝_mp_jt(pc),a0
  728.     bra    draw1_jmp
  729. .endif
  730.  
  731. ****************************************************************
  732. draw1_æSèpö±è┐ÄÜ:
  733. *    moveq.l    #0,d0
  734. *    move.b    dw_zen0_font(a6),d0
  735.     lea.l    draw1_æSèpö±è┐ÄÜ_12x12_jt(pc),a0
  736.     cmpi.b    #6,d6
  737.     beq    draw1_jmp
  738.     lea.l    draw1_æSèpö±è┐ÄÜ_16x16_jt(pc),a0
  739.     cmpi.b    #8,d6
  740.     beq    draw1_jmp
  741. *    lea.l    draw1_æSèpö±è┐ÄÜ_mp_jt(pc),a0
  742.     bra    draw1_jmp
  743.  
  744. draw1_æSèpæµéPÉàÅÇ:
  745. *    moveq.l    #0,d0
  746. *    move.b    dw_zen1_font(a6),d0
  747.     lea.l    draw1_æSèpæµéPÉàÅÇ_12x12_jt(pc),a0
  748.     cmpi.b    #6,d6
  749.     beq    draw1_jmp
  750.     lea.l    draw1_æSèpæµéPÉàÅÇ_16x16_jt(pc),a0
  751.     cmpi.b    #8,d6
  752.     beq    draw1_jmp
  753. *    lea.l    draw1_æSèpæµéPÉàÅÇ_mp_jt(pc),a0
  754.     bra    draw1_jmp
  755.  
  756.  
  757. draw1_æSèpæµéQÉàÅÇ:
  758.     moveq.l    #0,d0
  759. *    move.b    dw_zen2_font(a6),d0
  760.     lea.l    draw1_æSèpæµéQÉàÅÇ_12x12_jt(pc),a0
  761.     cmpi.b    #6,d6
  762.     beq    draw1_jmp
  763.     lea.l    draw1_æSèpæµéQÉàÅÇ_16x16_jt(pc),a0
  764.     cmpi.b    #8,d6
  765.     beq    draw1_jmp
  766. *    lea.l    draw1_æSèpæµéQÉàÅÇ_mp_jt(pc),a0
  767.     bra    draw1_jmp
  768.  
  769.  
  770. draw1_éQâoâCâgö╝èp:
  771.     moveq.l    #0,d0
  772.     bra    draw1_next    *!debug
  773. .if    0
  774.     moveq.l    #0,d0
  775. *    move.b    dw_han1_font(a6),d0
  776.     lea.l    draw1_éQâoâCâgö╝èp_6x16_jt(pc),a0
  777. *    cmpi.w    #12<<8|16,dw_x_size(a6)
  778. *    beq    draw1_jmp
  779. *    lea.l    draw1_éQâoâCâgö╝èp_mp_jt(pc),a0
  780.     bra    draw1_jmp
  781. .endif
  782.  
  783.  
  784.  
  785. *********************************************************
  786. draw1_ö╝èpæOö╝_6x12_jt:
  787. q    =    draw1_ö╝èpæOö╝_6x12_jt
  788.     .dc.w    draw1_ö╝èpæOö╝_6x12_ROM12-q
  789. *    .dc.w    draw1_ö╝èpæOö╝_6x12_ROM16-q
  790. *    .dc.w    draw1_ö╝èpæOö╝_6x12_ROM24-q
  791.  
  792. draw1_ö╝èpæOö╝_6x12_ROM12:    * ROM12 é╠ö╝èpæOö╝é≡ 6x12 é┼öCê╙é╠âAâhâîâXé╓Åæé¡
  793. *draw1_ö╝èpîπö╝_6x12_ROM16:    * ROM16 é╠ö╝èpîπö╝        üV
  794. *draw1_ö╝èpîπö╝_6x12_ROM24:    * ROM24 é╠ö╝èpîπö╝        üV
  795. draw1_éQâoâCâgö╝èp_6x16_ROM12:
  796.     tst.l    d5        * âhâbâgÉöéªâéü[âhüH
  797.     bmi    9f
  798.  
  799.     moveq.l    #6,d2        * 12x12 dot
  800.     IOCS    _FNTADR
  801.     movea.l    d0,a1        * a1.l = âtâHâôâgâAâhâîâX
  802.  
  803.     tst.l    d6    * ë║ÉⁿüH
  804.     bpl    2f
  805.             * ë║Éⁿé╠Åêù¥üié╛é╣éªüj
  806.     lea.l    font_work,a0
  807.     moveq.l    #12-1-1,d0
  808. 1:    move.b    (a1)+,(a0)+
  809.     dbra    d0,1b
  810.     move.b    #-1,(a0)
  811.     lea.l    font_work,a1
  812.  
  813. 2:
  814.     lea.l    NEXT_LINE*4(a2),a2    * ÅπéSâhâbâgé═ò`é⌐é╚éó
  815.     move.w    d5,d0
  816.     lea.l    put_6x12_jt(pc),a0
  817.     add.w    d0,d0
  818.     move.w    (a0,d0.w),d0
  819.     jsr    (a0,d0.w)
  820. 9:    moveq.l    #6,d0        * ò╢ÄÜé╠âhâbâgÉö
  821.     lea.l    -NEXT_LINE*4(a2),a2
  822.     bra    draw1_next
  823.  
  824. *********************************************************
  825. draw1_æSèpö±è┐ÄÜ_12x12_jt:
  826. q    =    draw1_æSèpö±è┐ÄÜ_12x12_jt
  827.     .dc.w    draw1_æSèpö±è┐ÄÜ_12x12_ROM12-q
  828. *    .dc.w    draw1_æSèpö±è┐ÄÜ_12x12_ROM16-q
  829.  
  830. draw1_æSèpæµéPÉàÅÇ_12x12_jt:
  831. q    =    draw1_æSèpæµéPÉàÅÇ_12x12_jt
  832.     .dc.w    draw1_æSèpæµéPÉàÅÇ_12x12_ROM12-q
  833. *    .dc.w    draw1_æSèpæµéPÉàÅÇ_12x12_ROM16-q
  834.  
  835. draw1_æSèpæµéQÉàÅÇ_12x12_jt:
  836. q    =    draw1_æSèpæµéQÉàÅÇ_12x12_jt
  837.     .dc.w    draw1_æSèpæµéQÉàÅÇ_12x12_ROM12-q
  838. *    .dc.w    draw1_æSèpæµéQÉàÅÇ_12x12_ROM16-q
  839.  
  840. draw1_æSèpö±è┐ÄÜ_12x12_ROM12:
  841. draw1_æSèpæµéPÉàÅÇ_12x12_ROM12
  842. draw1_æSèpæµéQÉàÅÇ_12x12_ROM12
  843.     tst.l    d5        * âhâbâgÉöéªâéü[âhüH
  844.     bmi    9f
  845.  
  846.     moveq.l    #6,d2        * 12x12 dot
  847.     IOCS    _FNTADR
  848.     movea.l    d0,a1        * a1.l = âtâHâôâgâAâhâîâX
  849.  
  850.     tst.l    d6    * ë║ÉⁿüH
  851.     bpl    2f
  852.             * ë║Éⁿé╠Åêù¥üié╛é╣éªüj
  853.     lea.l    font_work,a0
  854.     moveq.l    #(12-1)*2-1,d0
  855. 1:    move.b    (a1)+,(a0)+
  856.     dbra    d0,1b
  857.     move.b    #-1,(a0)+
  858.     move.b    #-1,(a0)+
  859.     lea.l    font_work,a1
  860.  
  861. 2:
  862.     lea.l    NEXT_LINE*4(a2),a2    * ÅπéSâhâbâgé═ò`é⌐é╚éó
  863.     move.w    d5,d0
  864.     lea.l    put_12x12_jt(pc),a0
  865.     add.w    d0,d0
  866.     move.w    (a0,d0.w),d0
  867.     jsr    (a0,d0.w)
  868. 9:    move.w    #12,d0        * ò╢ÄÜé╠âhâbâgÉö
  869.     lea.l    -NEXT_LINE*4(a2),a2
  870.     bra    draw1_next
  871.  
  872. *********************************************************
  873. draw1_ö╝èpæOö╝_8x16_jt:
  874. q    =    draw1_ö╝èpæOö╝_8x16_jt
  875.     .dc.w    draw1_ö╝èpæOö╝_8x16_ROM12-q
  876. *    .dc.w    draw1_ö╝èpæOö╝_8x16_ROM16-q
  877. *    .dc.w    draw1_ö╝èpæOö╝_8x16_ROM24-q
  878.  
  879. draw1_ö╝èpæOö╝_8x16_ROM12:    * ROM12 é╠ö╝èpæOö╝é≡ 8x16 é┼öCê╙é╠âAâhâîâXé╓Åæé¡
  880. *draw1_ö╝èpîπö╝_8x16_ROM16:    * ROM16 é╠ö╝èpîπö╝        üV
  881. *draw1_ö╝èpîπö╝_8x16_ROM24:    * ROM24 é╠ö╝èpîπö╝        üV
  882. *draw1_éQâoâCâgö╝èp_6x16_ROM12:
  883.     tst.l    d5        * âhâbâgÉöéªâéü[âhüH
  884.     bmi    9f
  885.  
  886.     moveq.l    #8,d2        * 16x16 dot
  887.     IOCS    _FNTADR
  888.     movea.l    d0,a1        * a1.l = âtâHâôâgâAâhâîâX
  889.  
  890.     tst.l    d6    * ë║ÉⁿüH
  891.     bpl    2f
  892.  
  893.             * ë║Éⁿé╠Åêù¥üié╛é╣éªüj
  894.     lea.l    font_work,a0
  895.     moveq.l    #16-1-1,d0
  896. 1:    move.b    (a1)+,(a0)+
  897.     dbra    d0,1b
  898.     move.b    #-1,(a0)
  899.     lea.l    font_work,a1
  900.  
  901. 2:
  902.     move.w    d5,d0
  903.     lea.l    put_8x16_jt(pc),a0
  904.     add.w    d0,d0
  905.     move.w    (a0,d0.w),d0
  906.     jsr    (a0,d0.w)
  907. 9:    moveq.l    #8,d0        * ò╢ÄÜé╠âhâbâgÉö
  908.     bra    draw1_next
  909.  
  910. ****************************************************************
  911. draw1_æSèpö±è┐ÄÜ_16x16_jt:
  912. q    =    draw1_æSèpö±è┐ÄÜ_16x16_jt
  913.     .dc.w    draw1_æSèpö±è┐ÄÜ_16x16_ROM12-q
  914. *    .dc.w    draw1_æSèpö±è┐ÄÜ_16x16_ROM16-q
  915.  
  916. draw1_æSèpæµéPÉàÅÇ_16x16_jt:
  917. q    =    draw1_æSèpæµéPÉàÅÇ_16x16_jt
  918.     .dc.w    draw1_æSèpæµéPÉàÅÇ_16x16_ROM12-q
  919. *    .dc.w    draw1_æSèpæµéPÉàÅÇ_16x16_ROM16-q
  920.  
  921. draw1_æSèpæµéQÉàÅÇ_16x16_jt:
  922. q    =    draw1_æSèpæµéQÉàÅÇ_16x16_jt
  923.     .dc.w    draw1_æSèpæµéQÉàÅÇ_16x16_ROM12-q
  924. *    .dc.w    draw1_æSèpæµéQÉàÅÇ_16x16_ROM16-q
  925.  
  926. draw1_æSèpö±è┐ÄÜ_16x16_ROM12:
  927. draw1_æSèpæµéPÉàÅÇ_16x16_ROM12
  928. draw1_æSèpæµéQÉàÅÇ_16x16_ROM12
  929.     tst.l    d5        * âhâbâgÉöéªâéü[âhüH
  930.     bmi    9f
  931.  
  932.     moveq.l    #8,d2        * 16x16 dot
  933.     IOCS    _FNTADR
  934.     movea.l    d0,a1        * a1.l = âtâHâôâgâAâhâîâX
  935.  
  936.     tst.l    d6    * ë║ÉⁿüH
  937.     bpl    2f
  938.  
  939.             * ë║Éⁿé╠Åêù¥üié╛é╣éªüj
  940.     lea.l    font_work,a0
  941.     moveq.l    #(16-1)*2-1,d0
  942. 1:    move.b    (a1)+,(a0)+
  943.     dbra    d0,1b
  944.     move.b    #-1,(a0)+
  945.     move.b    #-1,(a0)+
  946.     lea.l    font_work,a1
  947.  
  948. 2:
  949.     move.w    d5,d0
  950.     lea.l    put_16x16_jt(pc),a0
  951.     add.w    d0,d0
  952.     move.w    (a0,d0.w),d0
  953.     jsr    (a0,d0.w)
  954. 9:    moveq.l    #16,d0        * ò╢ÄÜé╠âhâbâgÉö
  955.     bra    draw1_next
  956.  
  957.  
  958.  
  959. ****************************************************************
  960. *    É│ò√îⁿÆßæ¼âXâNâìü[âï
  961. ScrollForward:
  962.     link    a6,#0
  963.     movem.l    d1-d7/a0-a5,-(sp)
  964.  
  965.     move.l    8(a6),d0
  966.     beq    ScrollForward_rts
  967.     movea.l    d0,a4            * a4.l = &xp_text
  968.     move.l    xptext_current_line(a4),d0
  969.     addi.l    #DISP_Y,d0
  970.     cmp.l    xptext_line(a4),d0
  971.     bge    ScrollForward_rts
  972.  
  973.     move.l    xptext_image_table(a4),image_table_ptr
  974.     move.l    xptext_link_table(a4),link_table_ptr
  975.  
  976.             * âÅü[âNòö TEXTVRAM é╔éPìsò`ëµ
  977.     move.l    xptext_current_line(a4),d0
  978.     addq.l    #1,xptext_current_line(a4)
  979.     addi.l    #DISP_Y,d0
  980.     mulu.w    #size_of_line_ptr,d0
  981.     movea.l    xptext_line_ptr(a4),a5
  982.     adda.w    d0,a5        * a5.l = ò\Īé╖éΘ line_ptr
  983.     lea.l    TEXTVRAM+NEXT_LINE*32*16,a2
  984.     move.w    gr_y,d0
  985.     mulu.w    #512*2,d0
  986.     lea.l    GVRAM,a3
  987.     adda.l    d0,a3
  988.     moveq.l    #DISP_X_OFFSET,d5
  989.     movem.l    a6,-(sp)
  990.     bsr    draw1
  991.     movem.l    (sp)+,a6
  992.  
  993.     move.b    #4,last_op_counter
  994.     bsr    ScrollForward_continue
  995.  
  996. ScrollForward_rts:
  997.     movem.l    (sp)+,d1-d7/a0-a5
  998.     unlk    a6
  999.     rts
  1000.  
  1001.  
  1002. ScrollForward_continue:        * æSæ╠é≡âXâNâìü[âïâAâbâv
  1003.     move.w    gr_y,d0
  1004.     addi.w    #4,d0
  1005.     andi.w    #511,d0
  1006.     bsr    set_gr_y
  1007.  
  1008.     move.w    #1<<8|0,d1        * d1.w = ô]æùî│<<8|ô]æùɵ
  1009.     move.w    #(DISP_Y+1)*4,d2    * d2.w = âRâsü[ë±Éö
  1010.     moveq.l    #%0011,d3
  1011.     IOCS    _TXRASCPY
  1012.  
  1013.     subq.b    #1,last_op_counter
  1014.     bne    @f
  1015.             * âÅü[âNùp TEXTVRAM é≡âNâèâA
  1016.     move.w    #(128+4)<<8|128,d1    * d1.w = ô]æùî│<<8|ô]æùɵ
  1017.     moveq.l    #4,d2            * d2.w = âRâsü[ë±Éö
  1018.     moveq.l    #%1111,d3
  1019.     IOCS    _TXRASCPY
  1020. @@:
  1021.     rts
  1022.  
  1023.  
  1024.  
  1025. ****************************************************************
  1026. *    ïtò√îⁿÆßæ¼âXâNâìü[âï
  1027. ScrollBackward:
  1028.     link    a6,#0
  1029.     movem.l    d1-d7/a0-a5,-(sp)
  1030.  
  1031.     move.l    8(a6),d0
  1032.     beq    ScrollBackward_rts
  1033.     movea.l    d0,a4            * a4.l = &xp_text
  1034.     tst.l    xptext_current_line(a4)
  1035.     beq    ScrollBackward_rts
  1036.  
  1037.     move.l    xptext_image_table(a4),image_table_ptr
  1038.     move.l    xptext_link_table(a4),link_table_ptr
  1039.  
  1040.             * âÅü[âNòö TEXTVRAM é╔éPìsò`ëµ
  1041.     move.l    xptext_current_line(a4),d0
  1042.     subq.l    #1,xptext_current_line(a4)
  1043.     subq.l    #1,d0
  1044.     mulu.w    #size_of_line_ptr,d0
  1045.     movea.l    xptext_line_ptr(a4),a5
  1046.     adda.w    d0,a5        * a5.l = ò\Īé╖éΘ line_ptr
  1047.     lea.l    TEXTVRAM+NEXT_LINE*32*16,a2
  1048.     move.w    gr_y,d0
  1049.     addi.w    #(DISP_Y-1)*16,d0
  1050.     andi.w    #511,d0
  1051.     mulu.w    #512*2,d0
  1052.     lea.l    GVRAM,a3
  1053.     adda.l    d0,a3
  1054.     moveq.l    #DISP_X_OFFSET,d5
  1055.     movem.l    a6,-(sp)
  1056.     bsr    draw1
  1057.     movem.l    (sp)+,a6
  1058.  
  1059.     move.w    #(128+4-1)<<8|0,back_work
  1060.     move.b    #4,last_op_counter
  1061.     bsr    ScrollBackward_continue
  1062.  
  1063. ScrollBackward_rts:
  1064.     movem.l    (sp)+,d1-d7/a0-a5
  1065.     unlk    a6
  1066.     rts
  1067.  
  1068.  
  1069. ScrollBackward_continue:    * æSæ╠é≡âXâNâìü[âïâ_âEâô
  1070.     move.w    back_work,d4    * d4.w = ô]æùî│<<8|ô]æùɵ
  1071. 1:
  1072.     move.w    gr_y,d0
  1073.     subi.w    #4,d0
  1074.     andi.w    #511,d0
  1075.     bsr    set_gr_y
  1076.  
  1077.     move.w    #(DISP_Y*4-2)<<8|DISP_Y*4-1,d1        * d1.w = ô]æùî│<<8|ô]æùɵ
  1078.     move.w    #DISP_Y*4-1,d2        * d2.w = âRâsü[ë±Éö
  1079.     move.w    #%10000000_00000011,d3    * d3.w = âRâsü[ò√îⁿ<<15|âAâNâZâXâvâîü[âô
  1080.     IOCS    _TXRASCPY
  1081.  
  1082.     move.w    d4,d1            * d1.w = ô]æùî│<<8|ô]æùɵ
  1083.     moveq.l    #1,d2            * d2.w = âRâsü[ë±Éö
  1084.     move.w    #%00000000_00000011,d3    * d3.w = âRâsü[ò√îⁿ<<15|âAâNâZâXâvâîü[âô
  1085.     IOCS    _TXRASCPY
  1086.     subi.w    #(1<<8),d4
  1087.  
  1088.     move.w    d4,back_work
  1089.  
  1090.     subq.b    #1,last_op_counter
  1091.     bne    @f
  1092.             * âÅü[âNùp TEXTVRAM é≡âNâèâA
  1093.     move.w    #(128+4)<<8|128,d1    * d1.w = ô]æùî│<<8|ô]æùɵ
  1094.     moveq.l    #4,d2            * d2.w = âRâsü[ë±Éö
  1095.     moveq.l    #%1111,d3
  1096.     IOCS    _TXRASCPY
  1097. @@:
  1098.     rts
  1099.  
  1100. back_work:
  1101.     .ds.w    1
  1102.  
  1103.  
  1104. ****************************************************************
  1105. *    É│ò√îⁿìéæ¼âXâNâìü[âï
  1106. ScrollFastForward:
  1107.     link    a6,#0
  1108.     movem.l    d1-d7/a0-a5,-(sp)
  1109.  
  1110.     move.l    8(a6),d0
  1111.     beq    ScrollForward_rts
  1112.     movea.l    d0,a4            * a4.l = &xp_text
  1113.     move.l    xptext_current_line(a4),d0
  1114.     addi.l    #DISP_Y,d0
  1115.     cmp.l    xptext_line(a4),d0
  1116.     bge    ScrollFastForward_rts
  1117.  
  1118.     move.l    xptext_image_table(a4),image_table_ptr
  1119.     move.l    xptext_link_table(a4),link_table_ptr
  1120.  
  1121.             * âÅü[âNòö TEXTVRAM é╔éPìsò`ëµ
  1122.     move.l    xptext_current_line(a4),d0
  1123.     addq.l    #1,xptext_current_line(a4)
  1124.     addi.l    #DISP_Y,d0
  1125.     mulu.w    #size_of_line_ptr,d0
  1126.     movea.l    xptext_line_ptr(a4),a5
  1127.     adda.w    d0,a5        * a5.l = ò\Īé╖éΘ line_ptr
  1128.     lea.l    TEXTVRAM+NEXT_LINE*32*16,a2
  1129.     move.w    gr_y,d0
  1130.     mulu.w    #512*2,d0
  1131.     lea.l    GVRAM,a3
  1132.     adda.l    d0,a3
  1133.     moveq.l    #DISP_X_OFFSET,d5
  1134.     movem.l    a6,-(sp)
  1135.     bsr    draw1
  1136.     movem.l    (sp)+,a6
  1137.  
  1138.             * æSæ╠é≡âXâNâìü[âïâAâbâv
  1139.     move.w    gr_y,d0
  1140.     addi.w    #16,d0
  1141.     andi.w    #511,d0
  1142.     bsr    set_gr_y
  1143.  
  1144.     move.w    #4<<8|0,d1        * d1.w = ô]æùî│<<8|ô]æùɵ
  1145.     move.w    #(DISP_Y+1)*4,d2    * d2.w = âRâsü[ë±Éö
  1146.     moveq.l    #%0011,d3
  1147.     IOCS    _TXRASCPY
  1148.  
  1149.             * âÅü[âNùp TEXTVRAM é≡âNâèâA
  1150.     move.w    #(128+4)<<8|128,d1    * d1.w = ô]æùî│<<8|ô]æùɵ
  1151.     moveq.l    #4,d2            * d2.w = âRâsü[ë±Éö
  1152.     moveq.l    #%1111,d3
  1153.     IOCS    _TXRASCPY
  1154.  
  1155. ScrollFastForward_rts:
  1156.     movem.l    (sp)+,d1-d7/a0-a5
  1157.     unlk    a6
  1158.     rts
  1159.  
  1160.  
  1161. ****************************************************************
  1162. *    ïtò√îⁿìéæ¼âXâNâìü[âï
  1163. ScrollFastBackward:
  1164.     link    a6,#0
  1165.     movem.l    d1-d7/a0-a5,-(sp)
  1166.  
  1167.     move.l    8(a6),d0
  1168.     beq    ScrollBackward_rts
  1169.     movea.l    d0,a4            * a4.l = &xp_text
  1170.     tst.l    xptext_current_line(a4)
  1171.     beq    ScrollFastBackward_rts
  1172.  
  1173.     move.l    xptext_image_table(a4),image_table_ptr
  1174.     move.l    xptext_link_table(a4),link_table_ptr
  1175.  
  1176.             * âÅü[âNòö TEXTVRAM é╔éPìsò`ëµ
  1177.     move.l    xptext_current_line(a4),d0
  1178.     subq.l    #1,d0
  1179.     move.l    d0,xptext_current_line(a4)
  1180.     mulu.w    #size_of_line_ptr,d0
  1181.     movea.l    xptext_line_ptr(a4),a5
  1182.     adda.w    d0,a5        * a5.l = ò\Īé╖éΘ line_ptr
  1183.     lea.l    TEXTVRAM+NEXT_LINE*32*16,a2
  1184.     move.w    gr_y,d0
  1185.     addi.w    #(DISP_Y-1)*16,d0
  1186.     andi.w    #511,d0
  1187.     mulu.w    #512*2,d0
  1188.     lea.l    GVRAM,a3
  1189.     adda.l    d0,a3
  1190.     moveq.l    #DISP_X_OFFSET,d5
  1191.     movem.l    a6,-(sp)
  1192.     bsr    draw1
  1193.     movem.l    (sp)+,a6
  1194.  
  1195.             * æSæ╠é≡âXâNâìü[âïâ_âEâô
  1196.     move.w    gr_y,d0
  1197.     subi.w    #16,d0
  1198.     andi.w    #511,d0
  1199.     bsr    set_gr_y
  1200.  
  1201.     move.w    #((DISP_Y-1)*4-1)<<8|DISP_Y*4-1,d1    * d1.w = ô]æùî│<<8|ô]æùɵ
  1202.     move.w    #(DISP_Y-1)*4,d2    * d2.w = âRâsü[ë±Éö
  1203.     move.w    #%10000000_00000011,d3    * d3.w = âRâsü[ò√îⁿ<<15|âAâNâZâXâvâîü[âô
  1204.     IOCS    _TXRASCPY
  1205.  
  1206.     move.w    #128<<8|0,d1    * d1.w = ô]æùî│<<8|ô]æùɵ
  1207.     moveq.l    #4,d2            * d2.w = âRâsü[ë±Éö
  1208.     move.w    #%00000000_00000011,d3    * d3.w = âRâsü[ò√îⁿ<<15|âAâNâZâXâvâîü[âô
  1209.     IOCS    _TXRASCPY
  1210.  
  1211.             * âÅü[âNùp TEXTVRAM é≡âNâèâA
  1212.     move.w    #(128+4)<<8|128,d1    * d1.w = ô]æùî│<<8|ô]æùɵ
  1213.     moveq.l    #4,d2            * d2.w = âRâsü[ë±Éö
  1214.     moveq.l    #%1111,d3
  1215.     IOCS    _TXRASCPY
  1216.  
  1217. ScrollFastBackward_rts:
  1218.     movem.l    (sp)+,d1-d7/a0-a5
  1219.     unlk    a6
  1220.     rts
  1221.  
  1222.  
  1223. ****************************************************************
  1224. PageForward:        * éPëµû╩Éié▐
  1225.     link    a6,#0
  1226.     movem.l    d1/a4,-(sp)
  1227.  
  1228.     move.l    8(a6),d0
  1229.     beq    PageForward_rts
  1230.     movea.l    d0,a4            * a4.l = &xp_text
  1231.  
  1232.     move.l    xptext_current_line(a4),d0
  1233.     addi.l    #DISP_Y,d0
  1234.     move.l    xptext_line(a4),d1
  1235.     subi.l    #DISP_Y,d1
  1236.     ble    PageForward_rts
  1237.     cmp.l    d1,d0
  1238.     beq    PageForward_rts
  1239.     blt    @f
  1240.     move.l    d1,d0
  1241. @@:
  1242.     cmp.l    xptext_current_line(a4),d0
  1243.     beq    PageForward_rts
  1244.     move.l    d0,xptext_current_line(a4)
  1245.  
  1246.     pea.l    (a4)
  1247.     bsr    _DispAll
  1248.     addq.w    #4,sp
  1249. PageForward_rts:
  1250.     movem.l    (sp)+,d1/a4
  1251.     unlk    a6
  1252.     rts
  1253.  
  1254.  
  1255. ****************************************************************
  1256. PageBackward:        * éPëµû╩û▀éΘ
  1257.     link    a6,#0
  1258.     movem.l    a4,-(sp)
  1259.  
  1260.     move.l    8(a6),d0
  1261.     beq    PageBackward_rts
  1262.     movea.l    d0,a4            * a4.l = &xp_text
  1263.  
  1264.     move.l    xptext_current_line(a4),d0
  1265.     beq    PageBackward_rts
  1266.     subi.l    #DISP_Y,d0
  1267.     bpl    @f
  1268.     moveq.l    #0,d0
  1269. @@:
  1270.     cmp.l    xptext_current_line(a4),d0
  1271.     beq    PageBackward_rts
  1272.     move.l    d0,xptext_current_line(a4)
  1273.  
  1274.     pea.l    (a4)
  1275.     bsr    _DispAll
  1276.     addq.w    #4,sp
  1277. PageBackward_rts:
  1278.     movem.l    (sp)+,a4
  1279.     unlk    a6
  1280.     rts
  1281.  
  1282. ****************************************************************
  1283. PageTop:        * âyü[âWé╠ɵô¬é╔
  1284.     link    a6,#0
  1285.     movem.l    a4,-(sp)
  1286.  
  1287.     move.l    8(a6),d0
  1288.     beq    PageTop_rts
  1289.     movea.l    d0,a4            * a4.l = &xp_text
  1290.  
  1291.     move.l    xptext_current_line(a4),d0
  1292.     beq    PageTop_rts
  1293.  
  1294.     clr.l    xptext_current_line(a4)
  1295.  
  1296.     pea.l    (a4)
  1297.     bsr    _DispAll
  1298.     addq.w    #4,sp
  1299. PageTop_rts:
  1300.     movem.l    (sp)+,a4
  1301.     unlk    a6
  1302.     rts
  1303.  
  1304. ****************************************************************
  1305. PageEnd:        * âyü[âWé╠ûûö÷é╔
  1306.     link    a6,#0
  1307.     movem.l    a4,-(sp)
  1308.  
  1309.     move.l    8(a6),d0
  1310.     beq    PageEnd_rts
  1311.     movea.l    d0,a4            * a4.l = &xp_text
  1312.  
  1313.     move.l    xptext_line(a4),d0
  1314.     subi.l    #DISP_Y,d0
  1315.     cmp.l    xptext_current_line(a4),d0
  1316.     beq    PageEnd_rts
  1317.  
  1318.     move.l    d0,xptext_current_line(a4)
  1319.     pea.l    (a4)
  1320.     bsr    _DispAll
  1321.     addq.w    #4,sp
  1322. PageEnd_rts:
  1323.     movem.l    (sp)+,a4
  1324.     unlk    a6
  1325.     rts
  1326.  
  1327. ****************************************************************
  1328. *    éPëµû╩ò\Īâïü[â`âô
  1329.  
  1330. _DispAll:        * in  : 4(sp).l = xp_text é╠âAâhâîâX
  1331.     link    a6,#0
  1332.     movem.l    d1-d7/a0-a5,-(sp)
  1333.  
  1334.     move.l    8(a6),d0
  1335.     beq    DispAll_rts
  1336.     movea.l    d0,a4            * a4.l = &xp_text
  1337.  
  1338.     bsr    _ClearText01
  1339.  
  1340.             * âXâNâìü[âïòöé╠âpâîâbâgé≡É▌ÆΦ
  1341.     lea.l    _config_color,a0
  1342.     tst.b    _color_mode
  1343.     beq    @f
  1344.     lea.l    _html_color,a0
  1345. @@:    lea.l    TEXTPALET,a1
  1346.     move.w    (a0)+,(a1)+
  1347.     move.w    (a0)+,(a1)+
  1348.     addq.w    #2,a0
  1349.     addq.w    #2,a1
  1350.     move.w    (a0)+,(a1)+
  1351.  
  1352.  
  1353.     lea.l    TEXTVRAM,a2
  1354.  
  1355.     move.l    xptext_current_line(a4),d0
  1356.     move.l    d0,d1
  1357.     mulu.w    #size_of_line_ptr,d0
  1358.     movea.l    xptext_line_ptr(a4),a5
  1359.     adda.w    d0,a5        * a5.l = ò\Īé╖éΘ line_ptr
  1360.  
  1361.     lea.l    GVRAM,a3
  1362.     moveq.l    #0,d0
  1363.     bsr    set_gr_y
  1364.  
  1365.     move.l    xptext_image_table(a4),image_table_ptr
  1366.     move.l    xptext_link_table(a4),link_table_ptr
  1367.  
  1368.     moveq.l    #DISP_Y-1,d2
  1369. DispAll_loop:        * ìsÉöé╘é±âïü[âv
  1370.     cmp.l    xptext_line(a4),d1
  1371.     bge    DispAll_end
  1372.     addq.l    #1,d1
  1373.     moveq.l    #DISP_X_OFFSET,d5    * é╕éτé╡é─ò\Ī
  1374.  
  1375.     movem.l    d1-d2/a2-a5,-(sp)
  1376.     bsr    draw1
  1377.     movem.l    (sp)+,d1-d2/a2-a5
  1378.     lea.l    NEXT_LINE*16(a2),a2
  1379.     lea.l    512*2*16(a3),a3
  1380.     lea.l    size_of_line_ptr(a5),a5
  1381.  
  1382.     dbra    d2,DispAll_loop
  1383. DispAll_end:
  1384.  
  1385. DispAll_rts:
  1386.     movem.l    (sp)+,d1-d7/a0-a5
  1387.     unlk    a6
  1388.     rts
  1389.  
  1390.  
  1391. ****************************************************************
  1392. _DispBack:    * öwîié≡ò`ëµ
  1393.     movem.l    d0-d2/a0-a1,-(sp)
  1394.  
  1395.     suba.l    a1,a1        * âXü[âpü[é╔
  1396.     IOCS    _B_SUPER
  1397.     move.l    d0,-(sp)
  1398.  
  1399.     lea.l    TEXTVRAM,a0
  1400.  
  1401.     moveq.l    #4-1,d1
  1402. DispBack_yloop:
  1403. *            * ì╢Æ[é╠âoü[
  1404. *    move.w    #%1_01000000,CRTC_R21    * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
  1405. *    move.b    #-1,(a0)+
  1406.     move.b    #0,(a0)+
  1407.             * âXâNâìü[âïòöé≡âXâLâbâv
  1408.     lea.l    512/8(a0),a0
  1409.     move.b    #0,(a0)+
  1410.             * î┼ÆΦòöé≡ò`é¡
  1411.     move.w    #%1_01000000,CRTC_R21    * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
  1412.     move.w    #256/8-1,d2
  1413.     moveq.l    #-1,d0
  1414. @@:    move.b    d0,(a0)+
  1415.     dbra    d2,@b
  1416.  
  1417.     lea.l    256/8-2(a0),a0
  1418.     dbra    d1,DispBack_yloop
  1419.  
  1420.         * éáé╞é═âëâXâ^ü[âRâsü[
  1421.     move.w    #512/4+3*4-1,d4
  1422.     move.w    #0<<8|1,d1        * d1.w = ô]æùî│<<8|ô]æùɵ
  1423. @@:    moveq.l    #1,d2            * d2.w = âRâsü[ë±Éö
  1424.     move.w    #%00000000_00001111,d3    * d3.w = âRâsü[ò√îⁿ<<15|âAâNâZâXâvâîü[âô
  1425.     IOCS    _TXRASCPY
  1426.     addq.w    #1,d1
  1427.     dbra    d4,@b
  1428.  
  1429.     move.w    #0,CRTC_R21    * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
  1430.     movea.l    (sp)+,a1
  1431.     IOCS    _B_SUPER
  1432.  
  1433.     movem.l    (sp)+,d0-d2/a0-a1
  1434.     rts
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440. ****************************************************************
  1441.  
  1442. ****************************************************************
  1443. _TextVdisp:    * ÉéÆ╝ô»è·èäéΦì₧é▌é┼Ä└ìsé│éΩéΘâïü[â`âô
  1444.     tst.b    in_vdisp        * ô±Ådé╔ÉéÆ╝ô»è·èäéΦì₧é▌é¬é⌐é⌐é┴é╜ÅΩìçé═
  1445.     bne    TextVdisp_rts_9        * ë╜éαé╡é╚éó
  1446.     tst.b    _freeze            * xptext ìXÉVÆåé╔é┬é½ò`ëµï╓Ä~
  1447.     bne    TextVdisp_rts_9        * ë╜éαé╡é╚éó
  1448.     st.b    in_vdisp
  1449.  
  1450.     movem.l    d0-d7/a0-a6,-(sp)
  1451.  
  1452.     tst.b    _hold_online
  1453.     beq    @f
  1454.     tst.b    _from_network
  1455.     beq    @f
  1456.     bsr    check_key2
  1457.     bra    TextVdisp_rts
  1458. @@:
  1459.     tst.b    last_op_counter
  1460.     bne    last_op_continue
  1461.     bsr    check_mouse
  1462.     bne    @f
  1463.     bsr    check_key
  1464. @@:
  1465.  
  1466. TextVdisp_rts:
  1467.     movem.l    (sp)+,d0-d7/a0-a6
  1468.     sf.b    in_vdisp
  1469.  
  1470. TextVdisp_rts_9:
  1471.     sf.b    vdisp_flag
  1472.     rte
  1473.  
  1474.  
  1475. *********************************************************
  1476. check_mouse:        * â}âEâXâJü[â\âïÅêù¥
  1477.             * out : d0.l & flag = 0 : æÇì∞é│éΩé╚é⌐é┴é╜
  1478.             * reg : a6-a7 ê╚èOöjë≤
  1479.     clr.b    last_op_counter
  1480.     moveq.l    #0,d7        * ò╘éΦÆl
  1481.  
  1482.     IOCS    _MS_GETDT
  1483.     move.l    d0,d3        * d3.l =
  1484.  
  1485.     move.l    _ms_pos,old_ms_pos
  1486.             * â}âEâXâJü[â\âïé≡ê┌ô«é╖éΘ
  1487.     move.l    _ms_pos,d1    * d1.l =
  1488.     swap.w    d1
  1489.     swap.w    d0
  1490.     asr.w    #8,d0
  1491.     add.w    d0,d1
  1492.     cmpi.w    #MOUSE_MIN_X,d1
  1493.     bgt    1f        * ê┌ô«ö═ê═é≡ɺî└
  1494.     move.w    #MOUSE_MIN_X,d1
  1495.     bra    2f
  1496. 1:    cmpi.w    #MOUSE_MAX_X,d1
  1497.     ble    2f
  1498.     move.w    #MOUSE_MAX_X,d1
  1499. 2:
  1500.  
  1501.     swap.w    d1
  1502.     move.l    d3,d0
  1503.     swap.w    d0
  1504.     ext.w    d0
  1505.     add.w    d0,d1
  1506.     cmpi.w    #MOUSE_MIN_Y,d1
  1507.     bgt    1f        * ê┌ô«ö═ê═é≡ɺî└
  1508.     move.w    #MOUSE_MIN_Y,d1
  1509.     bra    2f
  1510. 1:    cmpi.w    #MOUSE_MAX_Y,d1
  1511.     ble    2f
  1512.     move.w    #MOUSE_MAX_Y,d1
  1513. 2:    move.l    d1,_ms_pos
  1514.  
  1515.             * â}âEâXâJü[â\âïé╠ì└òWé╔éµé┴é─ò¬è≥
  1516.     move.l    d1,d0
  1517.     swap.w    d0
  1518.     cmpi.w    #512+8,d0
  1519.     ble    check_mouse_scroll
  1520. *    cmpi.w    #512+8+12,d0
  1521. *    ble    check_mouse_scbar
  1522.     bra    check_mouse_panel
  1523.  
  1524.  
  1525. check_mouse_scroll:    * â}âEâXâJü[â\âïé¬âXâNâìü[âïòöé╔éáéΘ
  1526.                 * â}âEâXé╠â{â^âôé╠Å≤æ╘é╔ë₧é╢é─ò¬è≥
  1527.     tst.w    d3            * â}âEâXì╢â{â^âôé¬ëƒé│éΩé╜é⌐üH
  1528.     bmi    check_mouse_msldown
  1529.     tst.b    d3            * â}âEâXëEâ{â^âôé¬ëƒé│éΩé╜é⌐üH
  1530.     bne    check_mouse_msrdown
  1531.  
  1532.                 * â}âEâXù╝â{â^âôé¬ùúé│éΩé─éóéΘÄ₧
  1533.     bsr    get_mouse_pat        * ò╘éΦÆl : d0.w = â}âEâXâpâ^ü[âôö╘ìå
  1534.  
  1535. check_mouse_rts:        * æÇì∞é│éΩé─ÅIù╣
  1536.     cmp.w    old_mouse_pat,d0    * æOé╞ô»é╢âpâ^ü[âôé⌐üH
  1537.     bne    1f
  1538.     move.l    old_ms_pos,d1
  1539.     cmp.l    _ms_pos,d1        * â}âEâXâJü[â\âïé¬ê┌ô«é╡é╜é⌐üH
  1540.     beq    2f
  1541. 1:    move.w    d0,old_mouse_pat
  1542.     bsr    draw_mouse_cursor
  1543. 2:
  1544.     move.l    d7,d0
  1545.     rts
  1546.  
  1547.  
  1548.  
  1549. check_mouse_msldown:
  1550.     moveq.l    #-1,d7
  1551.     tst.b    d3        * â}âEâXëEâ{â^âôé¬ëƒé│éΩé╜é⌐üH
  1552.     bne    check_mouse_mslrdown
  1553.                 * â}âEâXì╢â{â^âôé¬ëƒé│éΩé╜Ä₧
  1554.     moveq.l    #$e,d1
  1555.     IOCS    _BITSNS
  1556.     btst.l    #0,d0        * [SHIFT]
  1557.     bne    check_mouse_msldown_page
  1558.  
  1559.     move.b    last_op,d0
  1560.     cmpi.b    #OP_FORWARD,d0
  1561.     beq    check_mouse_msldown_lf
  1562.     cmpi.b    #OP_FASTFORWARD,d0
  1563.     beq    check_mouse_msldown_lff
  1564.  
  1565.     bsr    get_mouse_pat        * ò╘éΦÆl : d0.w = â}âEâXâpâ^ü[âôö╘ìå
  1566.     tst.w    in_link
  1567.     bne    check_mouse_msldown_in_link
  1568.                 * âèâôâNÅπé╔é╚éóÅΩìçé═âXâNâìü[âï
  1569.     bsr    check_exec_scroll_forward
  1570.     moveq.l    #PAT_SCROLL_F,d0
  1571.     bra    check_mouse_rts
  1572.  
  1573. check_mouse_msldown_in_link:    * âèâôâNÅπé╔éáéΘÅΩìç
  1574.     move.b    #QUIT_LINK,_quit_flag    * âèâôâNé┼ÅIù╣
  1575.     move.b    #OP_NON,last_op
  1576.     moveq.l    #PAT_POINTER,d0
  1577.     bra    check_mouse_rts
  1578.  
  1579. check_mouse_msldown_lf:        * æOë±É│ò√îⁿâXâNâìü[âïé╡é─ìíë±éαì╢â{â^âôé¬ëƒé│éΩé─éóéΘ
  1580.     move.w    _ms_pos_y,d0            * â}âEâXé¬ë║é╔âhâëâbâOé│éΩé╜üH
  1581.     cmp.w    old_ms_pos_y,d0            *
  1582.     bgt    check_mouse_msldown_lff_1    *
  1583. check_mouse_msldown_lf_1:
  1584.     bsr    check_exec_scroll_forward
  1585.     moveq.l    #PAT_SCROLL_F,d0
  1586.     bra    check_mouse_rts
  1587.  
  1588. check_mouse_msldown_lff:    * æOë±É│ò√îⁿìéæ¼âXâNâìü[âïé╡é─ìíë±éαì╢â{â^âôé¬ëƒé│éΩé─éóéΘ
  1589.     move.w    _ms_pos_y,d0            * â}âEâXé¬Åπé╔âhâëâbâOé│éΩé╜üH
  1590.     cmp.w    old_ms_pos_y,d0            *
  1591.     blt    check_mouse_msldown_lf_1    *
  1592. check_mouse_msldown_lff_1:
  1593.     bsr    check_exec_scroll_fast_forward
  1594.     moveq.l    #PAT_SCROLL_FF,d0
  1595.     bra    check_mouse_rts
  1596.  
  1597. check_mouse_msldown_page:
  1598.     bsr    check_exec_page_forward
  1599.     moveq.l    #PAT_SCROLL_FF,d0
  1600.     bra    check_mouse_rts
  1601.  
  1602.  
  1603.  
  1604. check_mouse_msrdown:        * â}âEâXëEâ{â^âôé¬ëƒé│éΩé╜Ä₧
  1605.     moveq.l    #-1,d7
  1606.  
  1607.     moveq.l    #$e,d1
  1608.     IOCS    _BITSNS
  1609.     btst.l    #0,d0        * [SHIFT]
  1610.     bne    check_mouse_msrdown_page
  1611.  
  1612.     move.b    last_op,d0
  1613.     cmpi.b    #OP_BACKWARD,d0
  1614.     beq    check_mouse_msrdown_lb
  1615.     cmpi.b    #OP_FASTBACKWARD,d0
  1616.     beq    check_mouse_msrdown_lfb
  1617.  
  1618.     bsr    get_mouse_pat        * ò╘éΦÆl : d0.w = â}âEâXâpâ^ü[âôö╘ìå
  1619.     tst.w    in_link
  1620.     bne    check_mouse_msrdown_in_link
  1621.                 * âèâôâNÅπé╔é╚éóÅΩìçé═âXâNâìü[âï
  1622.     bsr    check_exec_scroll_backward
  1623.     moveq.l    #PAT_SCROLL_B,d0
  1624.     bra    check_mouse_rts
  1625.  
  1626. check_mouse_msrdown_in_link:    * âèâôâNÅπé╔éáéΘÅΩìç
  1627. *    bsr    menu_in_link        *! debug âèâôâNÅπé┼âüâjâàü[é≡Åoé╖Åêù¥é¬ôⁿéΘù\ÆΦ
  1628.     move.b    #OP_NON,last_op
  1629.     moveq.l    #PAT_POINTER,d0
  1630.     bra    check_mouse_rts
  1631.  
  1632. check_mouse_msrdown_lb:        * æOë±ïtò√îⁿâXâNâìü[âïé╡é─ìíë±éαëEâ{â^âôé¬ëƒé│éΩé─éóéΘ
  1633.     move.w    _ms_pos_y,d0            * â}âEâXé¬Åπé╔âhâëâbâOé│éΩé╜üH
  1634.     cmp.w    old_ms_pos_y,d0            *
  1635.     blt    check_mouse_msrdown_lfb_1    *
  1636. check_mouse_msrdown_lb_1:
  1637.     bsr    check_exec_scroll_backward
  1638.     moveq.l    #PAT_SCROLL_B,d0
  1639.     bra    check_mouse_rts
  1640.  
  1641. check_mouse_msrdown_lfb:    * æOë±ïtò√îⁿìéæ¼âXâNâìü[âïé╡é─ìíë±éαëEâ{â^âôé¬ëƒé│éΩé─éóéΘ
  1642.     move.w    _ms_pos_y,d0            * â}âEâXé¬ë║é╔âhâëâbâOé│éΩé╜üH
  1643.     cmp.w    old_ms_pos_y,d0            *
  1644.     bgt    check_mouse_msrdown_lb_1    *
  1645. check_mouse_msrdown_lfb_1:
  1646.     bsr    check_exec_scroll_fast_backward
  1647.     moveq.l    #PAT_SCROLL_FB,d0
  1648.     bra    check_mouse_rts
  1649.  
  1650.  
  1651. check_mouse_msrdown_page:
  1652.     bsr    check_exec_page_backward
  1653.     moveq.l    #PAT_SCROLL_FB,d0
  1654.     bra    check_mouse_rts
  1655.  
  1656.  
  1657.  
  1658. check_mouse_mslrdown:    * â}âEâXù╝â{â^âôé¬ëƒé│éΩé╜Ä₧
  1659.     move.b    #QUIT_RETURN,_quit_flag    * éPé┬æOé╔û▀éΘ
  1660.     move.b    #OP_NON,last_op
  1661.     moveq.l    #PAT_POINTER,d0
  1662.     bra    check_mouse_rts
  1663.  
  1664.  
  1665. check_mouse_panel:
  1666.     lea.l    button_table,a0
  1667. 1:    move.l    8(a0),d2    * d2.l = Åêù¥âAâhâîâX
  1668.     beq    check_mouse_panel_rts
  1669.     cmp.w    (a0),d0
  1670.     blt    2f
  1671.     cmp.w    4(a0),d0
  1672.     bgt    2f
  1673.     cmp.w    2(a0),d1
  1674.     blt    2f
  1675.     cmp.w    6(a0),d1
  1676.     bgt    2f
  1677.     movem.l    a1,-(sp)
  1678.     movea.l    d2,a1
  1679.     jsr    (a1)
  1680.     movem.l    (sp)+,a1
  1681.     moveq.l    #-1,d7
  1682.     bra    check_mouse_panel_rts
  1683. 2:
  1684.     lea.l    12(a0),a0
  1685.     bra    1b
  1686.  
  1687. check_mouse_panel_rts:
  1688.     moveq.l    #PAT_POINTER,d0
  1689.     bra    check_mouse_rts
  1690.  
  1691.  
  1692. check_button_scroll:
  1693. .if    0
  1694.         * â{â^âôÿgö╜ô]ï@ö\é═ÄEé╡é─é¿é¡
  1695.     moveq.l    #-1,d0
  1696.  
  1697.     bsr    draw_mouse_cursor
  1698.  
  1699.     move.l    (a0),-(sp)
  1700.     move.l    4(a0),-(sp)
  1701.     bsr    reverse_button    * â{â^âôÿgé≡ö╜ô]
  1702.     lea.l    8(sp),sp
  1703.  
  1704.     moveq.l    #PAT_POINTER,d0
  1705.     bsr    draw_mouse_cursor
  1706. .endif
  1707.     tst.w    d3            * â}âEâXì╢â{â^âôé¬ëƒé│éΩé╜é⌐üH
  1708.     bmi    1f
  1709.     tst.b    d3            * â}âEâXëEâ{â^âôé¬ëƒé│éΩé╜é⌐üH
  1710.     bne    2f
  1711.     rts
  1712.  
  1713. 1:    bsr    check_exec_scroll_forward
  1714.     rts
  1715.  
  1716. 2:    bsr    check_exec_scroll_backward
  1717.     rts
  1718.  
  1719.  
  1720. check_button_page:
  1721.     tst.w    d3            * â}âEâXì╢â{â^âôé¬ëƒé│éΩé╜é⌐üH
  1722.     bmi    1f
  1723.     tst.b    d3            * â}âEâXëEâ{â^âôé¬ëƒé│éΩé╜é⌐üH
  1724.     bne    2f
  1725.     rts
  1726.  
  1727. 1:    bsr    check_exec_page_forward
  1728.     rts
  1729.  
  1730. 2:    bsr    check_exec_page_backward
  1731.     rts
  1732.  
  1733.  
  1734. check_button_topend:
  1735.     tst.w    d3            * â}âEâXì╢â{â^âôé¬ëƒé│éΩé╜é⌐üH
  1736.     bmi    1f
  1737.     tst.b    d3            * â}âEâXëEâ{â^âôé¬ëƒé│éΩé╜é⌐üH
  1738.     bne    2f
  1739.     rts
  1740.  
  1741. 1:    bsr    check_exec_page_end
  1742.     rts
  1743.  
  1744. 2:    bsr    check_exec_page_top
  1745.     rts
  1746.  
  1747.  
  1748. check_button_break:
  1749.     tst.w    d3            * â}âEâXì╢â{â^âôé¬ëƒé│éΩé╜é⌐üH
  1750.     bmi    1f
  1751.     rts
  1752. 1:
  1753.     move.b    #QUIT_EXIT,_quit_flag    * â}âEâXù╝â{â^âôé¬ëƒé│éΩé─ÅIù╣
  1754.     rts
  1755.  
  1756.  
  1757.  
  1758. *********************************************************
  1759. check_key:        * âLü[ôⁿù═é┼ÄwÆΦé╠âïü[â`âôé╔ò¬è≥
  1760.     moveq.l    #7,d1
  1761.     IOCS    _BITSNS
  1762.     add.b    d0,d0        * [CLR]
  1763.     bcs    check_key_clr
  1764.     add.b    d0,d0        * [ü½]
  1765.     bcs    check_key_down
  1766.     add.b    d0,d0        * [ü¿]
  1767.     bcs    check_key_right
  1768.     add.b    d0,d0        * [ü¬]
  1769.     bcs    check_key_up
  1770.     add.b    d0,d0        * [ü⌐]
  1771.     bcs    check_key_left
  1772.     add.b    d0,d0        * [UNDO]
  1773.     bcs    check_key_undo
  1774.     add.b    d0,d0        * [ROLL DOWN]
  1775.     bcs    check_key_rolldown
  1776.     add.b    d0,d0        * [ROLL UP]
  1777.     bcs    check_key_rollup
  1778.  
  1779.  
  1780. *! debug
  1781.     moveq.l    #4,d1
  1782.     IOCS    _BITSNS
  1783.     btst.l    #0,d0        * [D]
  1784.     bne    check_key_dump
  1785.  
  1786.     moveq.l    #3,d1
  1787.     IOCS    _BITSNS
  1788.     btst.l    #2,d0        * [P]
  1789.     bne    check_key_process
  1790.  
  1791. *! é▒é▒é▄é┼âfâoâbâOùp
  1792.  
  1793.     moveq.l    #$a,d1
  1794.     IOCS    _BITSNS
  1795.     btst.l    #3,d0        * [ôoÿ^]
  1796.     bne    check_key_touroku
  1797.     btst.l    #5,d0        * [XF1]
  1798.     bne    check_key_xf1
  1799.  
  1800.     moveq.l    #$c,d1
  1801.     IOCS    _BITSNS
  1802.     btst.l    #1,d0        * [BREAK]
  1803.     bne    check_key_break
  1804.     btst.l    #3,d0        * [F1]
  1805.     bne    check_key_f1
  1806.     btst.l    #4,d0        * [F2]
  1807.     bne    check_key_f2
  1808.  
  1809.     moveq.l    #0,d1
  1810.     IOCS    _BITSNS
  1811.     btst.l    #1,d0        * [ESC]
  1812.     bne    check_key_esc
  1813.     btst.l    #2,d0        * [1]
  1814.     bne    check_key_shell
  1815.  
  1816.     moveq.l    #6,d1
  1817.     IOCS    _BITSNS
  1818.     btst.l    #6,d0        * [home]
  1819.     bne    check_key_home
  1820.  
  1821.     move.b    #OP_NON,last_op
  1822. check_key_rts:
  1823.     rts
  1824.  
  1825.  
  1826. ****    ****
  1827. check_key_right:
  1828.     bsr    check_exec_scroll_forward
  1829.     bra    check_key_rts
  1830.  
  1831. check_key_left:
  1832.     bsr    check_exec_scroll_backward
  1833.     bra    check_key_rts
  1834.  
  1835. check_key_down:
  1836.     bsr    check_exec_scroll_fast_forward
  1837.     bra    check_key_rts
  1838.  
  1839. check_key_up:
  1840.     bsr    check_exec_scroll_fast_backward
  1841.     bra    check_key_rts
  1842.  
  1843. check_key_rollup:
  1844.     bsr    check_exec_page_forward
  1845.     bra    check_key_rts
  1846.  
  1847. check_key_rolldown:
  1848.     bsr    check_exec_page_backward
  1849.     bra    check_key_rts
  1850.  
  1851.  
  1852. check_key_f1:
  1853.     moveq.l    #$e,d1
  1854.     IOCS    _BITSNS
  1855.     btst.l    #0,d0        * [SHIFT]
  1856.     bne    check_key_edit
  1857.  
  1858.     bsr    check_exec_page_top
  1859.     bra    check_key_rts
  1860.  
  1861. check_key_edit:
  1862.     move.b    #QUIT_EDIT,_quit_flag    * ò╥ÅW
  1863.     move.b    #OP_OTHERS,last_op
  1864.     bra    check_key_rts
  1865.  
  1866.  
  1867. check_key_f2:
  1868.     bsr    check_exec_page_end
  1869.     bra    check_key_rts
  1870.  
  1871.  
  1872. ****    ****
  1873. check_key_break:
  1874.     move.b    #QUIT_EXIT,_quit_flag    * â}âEâXù╝â{â^âôé¬ëƒé│éΩé─ÅIù╣
  1875.     move.b    #OP_OTHERS,last_op
  1876.     bra    check_key_rts
  1877.  
  1878. check_key_esc:
  1879.     move.b    #QUIT_ABORT,_quit_flag    * ô╟é▌ì₧é▌ÆåÆf
  1880.     move.b    #OP_OTHERS,last_op
  1881.     bra    check_key_rts
  1882.  
  1883. check_key_undo:
  1884.     cmpi.b    #OP_NON,last_op
  1885.     bne    9f
  1886.  
  1887.     move.b    #QUIT_RETURN,_quit_flag    * éPé┬æOé╔û▀éΘ
  1888. 9:    move.b    #OP_OTHERS,last_op
  1889.     bra    check_key_rts
  1890.  
  1891. check_key_touroku:
  1892.     cmpi.b    #OP_NON,last_op
  1893.     bne    9f
  1894.  
  1895.     move.b    #QUIT_TOUROKU,_quit_flag    * âAâhâîâXÆáé╔ôoÿ^
  1896. 9:    move.b    #OP_OTHERS,last_op
  1897.     bra    check_key_rts
  1898.  
  1899. check_key_home:
  1900.     cmpi.b    #OP_NON,last_op
  1901.     bne    9f
  1902.  
  1903.     move.b    #QUIT_ADDRESSBOOK,_quit_flag    * âAâhâîâXÆáé╓
  1904. 9:    move.b    #OP_OTHERS,last_op
  1905.     bra    check_key_rts
  1906.  
  1907. check_key_clr:
  1908.     cmpi.b    #OP_NON,last_op
  1909.     bne    9f
  1910.  
  1911.     moveq.l    #$e,d1
  1912.     IOCS    _BITSNS
  1913.     btst.l    #1,d0        * [CTRL]
  1914.     bne    check_key_clr_ctrl
  1915.             * [CLR] é╠Åêù¥é¬ôⁿéΘù\ÆΦ
  1916.     move.b    #OP_OTHERS,last_op
  1917.     bra    check_key_rts
  1918. check_key_clr_ctrl:        * [CTRL]+[CLR]
  1919.     move.b    #QUIT_REDRAW,_quit_flag        * ëµû╩æSì─ò`ëµ
  1920. 9:    move.b    #OP_OTHERS,last_op
  1921.     bra    check_key_rts
  1922.  
  1923. check_key_shell:
  1924.     moveq.l    #$e,d1
  1925.     IOCS    _BITSNS
  1926.     btst.l    #0,d0        * [SHIFT]
  1927.     beq    check_key_rts
  1928.     move.b    #QUIT_SHELL,_quit_flag        * âVâFâï
  1929.     move.b    #OP_OTHERS,last_op
  1930.     bra    check_key_rts
  1931.  
  1932. *! debug
  1933. check_key_dump:
  1934.     move.b    #QUIT_DUMP,_quit_flag        * â_âôâv
  1935.     move.b    #OP_OTHERS,last_op
  1936.     bra    check_key_rts
  1937.  
  1938. check_key_process:
  1939.     move.b    #QUIT_PROCESS,_quit_flag    * PROCESS.X
  1940.     move.b    #OP_OTHERS,last_op
  1941.     bra    check_key_rts
  1942.  
  1943. check_key_xf1:
  1944.     btst.l    #6,d0            * [XF2]
  1945.     beq    check_key_rts
  1946.     move.b    #1,_d_option        * [XF1]+[XF2] é┼âfâoâbâOâéü[âhé╔
  1947.     move.b    #OP_OTHERS,last_op
  1948.     bra    check_key_rts
  1949.  
  1950. *! é▒é▒é▄é┼ debug
  1951.  
  1952.  
  1953. *********************************************************
  1954. check_exec_scroll_forward:
  1955.     move.l    _disp_xptext,-(sp)
  1956.     bsr    ScrollForward
  1957.     addq.w    #4,sp
  1958.     move.b    #OP_FORWARD,last_op
  1959.     rts
  1960.  
  1961. check_exec_scroll_fast_forward:
  1962.     move.l    _disp_xptext,-(sp)
  1963.     bsr    ScrollFastForward
  1964.     addq.w    #4,sp
  1965.     move.b    #OP_FASTFORWARD,last_op
  1966.     rts
  1967.  
  1968. check_exec_scroll_backward:
  1969.     move.l    _disp_xptext,-(sp)
  1970.     bsr    ScrollBackward
  1971.     addq.w    #4,sp
  1972.     move.b    #OP_BACKWARD,last_op
  1973.     rts
  1974.  
  1975. check_exec_scroll_fast_backward:
  1976.     move.l    _disp_xptext,-(sp)
  1977.     bsr    ScrollFastBackward
  1978.     addq.w    #4,sp
  1979.     move.b    #OP_FASTBACKWARD,last_op
  1980.     rts
  1981.  
  1982.  
  1983. check_exec_page_forward:
  1984.     cmpi.b    #OP_PAGEFORWARD,last_op
  1985.     bne    1f
  1986.     subq.b    #1,repeat_counter
  1987.     bne    9f
  1988.     move.b    _key_repeat_2nd,repeat_counter
  1989.     bra    2f
  1990. 1:    move.b    _key_repeat_1st,repeat_counter    * éPë±û┌é╔ëƒé│éΩé╜Ä₧
  1991. 2:
  1992.     move.l    _disp_xptext,-(sp)
  1993.     bsr    PageForward
  1994.     addq.w    #4,sp
  1995. 9:
  1996.     move.b    #OP_PAGEFORWARD,last_op
  1997.     rts
  1998.  
  1999.  
  2000. check_exec_page_backward:
  2001.     cmpi.b    #OP_PAGEBACKWARD,last_op
  2002.     bne    1f
  2003.     subq.b    #1,repeat_counter
  2004.     bne    9f
  2005.     move.b    _key_repeat_2nd,repeat_counter
  2006.     bra    2f
  2007. 1:    move.b    _key_repeat_1st,repeat_counter    * éPë±û┌é╔ëƒé│éΩé╜Ä₧
  2008. 2:
  2009.     move.l    _disp_xptext,-(sp)
  2010.     bsr    PageBackward
  2011.     addq.w    #4,sp
  2012. 9:
  2013.     move.b    #OP_PAGEBACKWARD,last_op
  2014.     rts
  2015.  
  2016.  
  2017. check_exec_page_top:
  2018.     cmpi.b    #OP_PAGETOP,last_op
  2019.     beq    9f
  2020.     move.l    _disp_xptext,-(sp)
  2021.     bsr    PageTop
  2022.     addq.w    #4,sp
  2023.     move.b    #OP_PAGETOP,last_op
  2024. 9:    rts
  2025.  
  2026.  
  2027. check_exec_page_end:
  2028.     cmpi.b    #OP_PAGEEND,last_op
  2029.     beq    9f
  2030.     move.l    _disp_xptext,-(sp)
  2031.     bsr    PageEnd
  2032.     addq.w    #4,sp
  2033.     move.b    #OP_PAGEEND,last_op
  2034. 9:    rts
  2035.  
  2036.  
  2037. *********************************************************
  2038. check_key2:        * âLü[ôⁿù═é┼ÄwÆΦé╠âïü[â`âôé╔ò¬è≥
  2039.             * [ESC] âLü[é╡é⌐â`âFâbâNé╡é╚éóö┼
  2040.     moveq.l    #0,d1
  2041.     IOCS    _BITSNS
  2042.     btst.l    #1,d0        * [ESC]
  2043.     beq    check_key2_rts
  2044.     move.b    #QUIT_ABORT,_quit_flag    * ô╟é▌ì₧é▌ÆåÆf
  2045.  
  2046. check_key2_rts:
  2047.     rts
  2048.  
  2049.  
  2050. *********************************************************
  2051. last_op_continue:
  2052.     move.b    last_op,d0
  2053.     cmpi.b    #OP_FORWARD,d0
  2054.     beq    last_op_forward
  2055.     cmpi.b    #OP_BACKWARD,d0
  2056.     beq    last_op_backward
  2057.     subq.b    #1,last_op_counter    * é▒é▒é╔é═ùêé╚éóânâYüiùêé╜éτâoâOüj
  2058. last_op_rts:
  2059.     bra    TextVdisp_rts
  2060.  
  2061. last_op_forward:
  2062.     bsr    ScrollForward_continue
  2063.     bra    last_op_rts
  2064.  
  2065. last_op_backward:
  2066.     bsr    ScrollBackward_continue
  2067.     bra    last_op_rts
  2068.  
  2069.  
  2070. *********************************************************
  2071. _WaitVdisp2:        * è∙é╔âXü[âpü[é╠Ä₧é╠ _WaitVdisp
  2072.     st.b    vdisp_flag
  2073. @@:    tst.b    vdisp_flag
  2074.     bne    @b
  2075.     rts
  2076.  
  2077.  
  2078. ****************************************************************
  2079. _ClearText:    * TEXTVRAM æSëµû╩âNâèâA
  2080.     movem.l    d1-d4/a0-a1,-(sp)
  2081.  
  2082.     suba.l    a1,a1        * âXü[âpü[é╔
  2083.     IOCS    _B_SUPER
  2084.     move.l    d0,-(sp)
  2085.  
  2086.     move.w    CRTC_R21,-(sp)
  2087.     move.w    #%1_11111111,CRTC_R21    * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
  2088.  
  2089.     lea.l    TEXTVRAM,a0
  2090.     moveq.l    #0,d0
  2091.     moveq.l    #128*4/4/4-1,d1
  2092. @@:    move.l    d0,(a0)+
  2093.     move.l    d0,(a0)+
  2094.     move.l    d0,(a0)+
  2095.     move.l    d0,(a0)+
  2096.     dbra    d1,@b
  2097.  
  2098.         * éáé╞é═âëâXâ^ü[âRâsü[
  2099.     move.w    #1024/4-1,d4
  2100.     move.w    #0<<8|1,d1        * d1.w = ô]æùî│<<8|ô]æùɵ
  2101. @@:    moveq.l    #1,d2            * d2.w = âRâsü[ë±Éö
  2102.     move.w    #%00000000_00001111,d3    * d3.w = âRâsü[ò√îⁿ<<15|âAâNâZâXâvâîü[âô
  2103.     IOCS    _TXRASCPY
  2104.     addq.w    #1,d1
  2105.     dbra    d4,@b
  2106.  
  2107.     move.w    (sp)+,CRTC_R21
  2108.     movea.l    (sp)+,a1
  2109.     IOCS    _B_SUPER
  2110.  
  2111.     movem.l    (sp)+,d1-d4/a0-a1
  2112.     rts
  2113.  
  2114.  
  2115. ****************************************************************
  2116. _ClearText01:    * TEXTVRAM 0/1 âyü[âWæSëµû╩âNâèâA
  2117.     movem.l    d1-d4/a0,-(sp)
  2118.  
  2119.     move.w    CRTC_R21,-(sp)
  2120.     move.w    #%1_00110011,CRTC_R21    * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
  2121.  
  2122.     lea.l    TEXTVRAM,a0
  2123.     moveq.l    #0,d0
  2124.     moveq.l    #128*4/4/4-1,d1
  2125. @@:    move.l    d0,(a0)+
  2126.     move.l    d0,(a0)+
  2127.     move.l    d0,(a0)+
  2128.     move.l    d0,(a0)+
  2129.     dbra    d1,@b
  2130.  
  2131.         * éáé╞é═âëâXâ^ü[âRâsü[
  2132.     move.w    #1024/4-1,d4
  2133.     move.w    #0<<8|1,d1        * d1.w = ô]æùî│<<8|ô]æùɵ
  2134. @@:    moveq.l    #1,d2            * d2.w = âRâsü[ë±Éö
  2135.     move.w    #%00000000_00000011,d3    * d3.w = âRâsü[ò√îⁿ<<15|âAâNâZâXâvâîü[âô
  2136.     IOCS    _TXRASCPY
  2137.     addq.w    #1,d1
  2138.     dbra    d4,@b
  2139.  
  2140.     move.w    (sp)+,CRTC_R21
  2141.  
  2142.     movem.l    (sp)+,d1-d4/a0
  2143.     rts
  2144.  
  2145.  
  2146. *********************************************************
  2147. set_gr_y:        * âOâëâtâBâbâNëµû╩é╠âXâNâìü[âïì└òWé≡âZâbâg
  2148.             * in  : d0.w = y ì└òW
  2149.     movem.l    a0,-(sp)
  2150.  
  2151.     move.w    d0,gr_y
  2152.     swap.w    d0
  2153.     move.w    #512-DISP_X_OFFSET,d0    * x ì└òWé═Åφé╔î┼ÆΦÆl
  2154.     swap.w    d0
  2155.  
  2156.     lea.l    CRTC_R12,a0
  2157.     move.l    d0,(a0)+
  2158.     move.l    d0,(a0)+
  2159.     move.l    d0,(a0)+
  2160.     move.l    d0,(a0)+
  2161.  
  2162.     movem.l    (sp)+,a0
  2163.     rts
  2164.  
  2165.  
  2166. *********************************************************
  2167. get_mouse_pat:        * â}âEâXâJü[â\âïé╠ê╩Æué⌐éτâ}âEâXâpâ^ü[âôö╘ìåé≡ô╛éΘ
  2168.             * üiùßéªé╬âèâôâNé╠Åπé╚éτûεê≤âJü[â\âïüAé╞é⌐üj
  2169.             * out : d0.w = â}âEâXâpâ^ü[âô No.
  2170.             *    in_link : âèâôâNÅπé╚éτ = !0
  2171.     movem.l    d1-d7/a1-a6,-(sp)
  2172.  
  2173.     moveq.l    #0,d5
  2174.     move.w    _ms_pos_x,d5    * d5.w = x
  2175.  
  2176.             * â}âEâXâJü[â\âïé¬ì╢Æ[ü^ëEÆ[é╠î┼ÆΦù╠êµé╔éáéΘé⌐üH
  2177.     cmpi.w    #DISP_X_OFFSET,d5
  2178.     blt    get_mouse_pointer    * x<8 é╚éτ
  2179.     cmpi.w    #DISP_X_OFFSET+512,d5
  2180.     bge    get_mouse_pointer    * x>8+512 é╚éτ
  2181.  
  2182.             * â}âEâXâJü[â\âïé¬âXâNâìü[âïù╠êµüiâeâLâXâgòöüjé╔
  2183.             * éáéΘé╠é┼üAâèâôâNé╠Åπé╔éáéΘé⌐é╟éñé⌐â`âFâbâN
  2184.     moveq.l    #0,d1
  2185.     move.w    _ms_pos_y,d1    * d1.w = y
  2186.     lsr.w    #4,d1
  2187.     movea.l    _disp_xptext,a0    * a0.l =
  2188.     movea.l    xptext_line_ptr(a0),a5    * a5.l =
  2189.     move.l    xptext_current_line(a0),d0    * d0.l =
  2190.     add.l    d0,d1        * d1.l = â}âEâXâJü[â\âïé╠éáéΘìsé╠ y
  2191.     cmp.l    xptext_line(a0),d1
  2192.     bge    get_mouse_no_scroll
  2193.  
  2194.     mulu.w    #size_of_line_ptr,d1
  2195.     adda.w    d1,a5        * a5.l = â}âEâXâJü[â\âïé¬éáéΘìsé╠ìsè╟ù¥âeü[âuâï
  2196.  
  2197.     subi.w    #DISP_X_OFFSET,d5
  2198.     ori.w    #$8000,d5    * âhâbâgÉöÉöéªâéü[âhé╔
  2199.     swap.w    d5
  2200.     move.w    #DISP_X_OFFSET,d5
  2201.     lea.l    TEXTVRAM,a2    * òKùvé╚éóé═é╕üiëµû╩é╔ò`é⌐éΩé╜éτâoâOüj
  2202.     suba.l    a3,a3        *        üV
  2203.     bsr    draw1
  2204.     tst.w    d0        * âèâôâNÆåüH
  2205.     beq    get_mouse_no_scroll
  2206.  
  2207. get_mouse_pointer:
  2208.     moveq.l    #PAT_POINTER,d0
  2209.     bra    get_mouse_pat_rts
  2210.  
  2211. get_mouse_no_scroll:
  2212.     moveq.l    #PAT_NO_SCROLL,d0
  2213.     bra    get_mouse_pat_rts
  2214.  
  2215. get_mouse_pat_rts:
  2216.     movem.l    (sp)+,d1-d7/a1-a6
  2217.     rts
  2218.  
  2219.  
  2220. *********************************************************
  2221. reverse_button:        * âeâLâXâgëµû╩é╔ò`é⌐éΩé╜â{â^âôé≡ö╜ô]é╖éΘ
  2222.             * in  : move.l    #X0.shl.16+Y0,-(sp)
  2223.             *    move.l    #X1.shl.16+Y1,-(sp)
  2224.             *    bsr    reverse_button
  2225.             *    lea.l    10(sp),sp
  2226.     link    a6,#0
  2227.     movem.l    d1-d7,-(sp)
  2228.  
  2229.     move.w    CRTC_R21,-(sp)    **
  2230.     clr.w    CRTC_R21
  2231.  
  2232.     move.w    12(a6),d4    * d4.w = X0
  2233.     move.w    14(a6),d5    * d5.w = Y0
  2234.     move.w    8(a6),d6    * d6.w = X1
  2235.     move.w    10(a6),d7    * d7.w = Y1
  2236.  
  2237.     move.w    d6,d2
  2238.     sub.w    d4,d2
  2239.     addq.w    #1,d2        * d2.w = X length
  2240.     move.w    d7,d3
  2241.     sub.w    d5,d3
  2242.     addq.w    #1,d3        * d3.w = Y length
  2243.  
  2244.     move.w    d1,-(sp)
  2245.     move.w    d2,-(sp)
  2246.     move.w    d5,-(sp)
  2247.     move.w    d4,-(sp)
  2248.     bsr    text_xline
  2249.     addq.w    #8,sp
  2250.  
  2251.     move.w    d1,-(sp)
  2252.     move.w    d3,-(sp)
  2253.     move.w    d5,-(sp)
  2254.     move.w    d4,-(sp)
  2255.     bsr    text_yline
  2256.     addq.w    #8,sp
  2257.  
  2258.     move.w    d1,-(sp)
  2259.     move.w    d2,-(sp)
  2260.     move.w    d7,-(sp)
  2261.     move.w    d4,-(sp)
  2262.     bsr    text_xline
  2263.     addq.w    #8,sp
  2264.  
  2265.     move.w    d1,-(sp)
  2266.     move.w    d3,-(sp)
  2267.     move.w    d5,-(sp)
  2268.     move.w    d6,-(sp)
  2269.     bsr    text_yline
  2270.     addq.w    #8,sp
  2271.  
  2272.     move.w    (sp)+,CRTC_R21    **
  2273.  
  2274.     movem.l    (sp)+,d1-d7
  2275.     unlk    a6
  2276.     rts
  2277.  
  2278.  
  2279. text_xline:
  2280.     link    a6,#0
  2281.     movem.l    d1-d7,-(sp)
  2282.  
  2283.     moveq.l    #0,d6
  2284.     moveq.l    #0,d7
  2285.     move.w    8(a6),d6    * d6.w = X
  2286.     move.w    10(a6),d7    * d7.w = Y
  2287.     move.w    12(a6),d5
  2288.     subq.w    #1,d5        * d5.w = length-1
  2289. @@:
  2290.     moveq.l    #0,d3
  2291.     moveq.l    #0,d4
  2292.     move.w    d6,d3        * d3.w = X
  2293.     move.w    d7,d4        * d4.w = Y
  2294.  
  2295.     move.l    d3,d0
  2296.     andi.l    #7,d0
  2297.     moveq.l    #7,d1
  2298.     sub.b    d0,d1
  2299.     moveq.l    #0,d0
  2300.     bset.l    d1,d0        * d0.b =
  2301.     lsr.l    #3,d3        * 1byte = 8dot
  2302.  
  2303.     lsl.l    #7,d4
  2304.     lea.l    TEXTVRAM+$2_0000*2,a0
  2305.     adda.l    d3,a0
  2306.     adda.l    d4,a0
  2307.  
  2308.     eor.b    d0,(a0)
  2309.  
  2310.     addq.w    #1,d6
  2311.     dbra    d5,@b
  2312.  
  2313.     movem.l    (sp)+,d1-d7
  2314.     unlk    a6
  2315.     rts
  2316.  
  2317.  
  2318. text_yline:
  2319.     link    a6,#0
  2320.     movem.l    d1/d5-d7,-(sp)
  2321.  
  2322.     moveq.l    #0,d6
  2323.     moveq.l    #0,d7
  2324.     move.w    8(a6),d6    * d6.w = X
  2325.     move.w    10(a6),d7    * d7.w = Y
  2326.     move.w    12(a6),d5
  2327.     subq.w    #1,d5        * d5.w = length-1
  2328.  
  2329.     move.l    d6,d0
  2330.     andi.l    #7,d0
  2331.     moveq.l    #7,d1
  2332.     sub.b    d0,d1
  2333.     moveq.l    #0,d0
  2334.     bset.l    d1,d0        * d0.b =
  2335.     lsr.l    #3,d6        * 1byte = 8dot
  2336.  
  2337.     lsl.l    #7,d7
  2338.     lea.l    TEXTVRAM+$2_0000*2,a0
  2339.     adda.l    d6,a0
  2340.     adda.l    d7,a0
  2341.  
  2342. @@:    eor.b    d0,(a0)
  2343.     lea.l    128(a0),a0
  2344.     dbra    d5,@b
  2345.  
  2346.     movem.l    (sp)+,d1/d5-d7
  2347.     unlk    a6
  2348.     rts
  2349.  
  2350.  
  2351. *********************************************************
  2352.     .data
  2353.     .even
  2354. button_table:        * â{â^âôé╠ì└òWé╞Åêù¥âAâhâîâX
  2355.     .dc.w    256+288,96,256+288+59,96+15
  2356.     .dc.l    check_button_scroll
  2357.     .dc.w    256+288,96+16,256+288+64,96+15+16
  2358.     .dc.l    check_button_page
  2359.     .dc.w    256+288,96+36,256+288+64,96+15+36
  2360.     .dc.l    check_button_topend
  2361.     .dc.w    256+448,312,256+448+64,312+15
  2362.     .dc.l    check_button_break
  2363.     .dc.w    0,0,0,0        * ÅIù╣âRü[âh
  2364.     .dc.l    0        *
  2365.  
  2366. extended_charcter:
  2367.                 * âpâ^ü[âôéO
  2368.     .dc.w    %00000000_00000000
  2369.     .dc.w    %01111111_11111110
  2370.     .dc.w    %01000000_00000010
  2371.     .dc.w    %01000000_00000010
  2372.     .dc.w    %01000000_00000010
  2373.     .dc.w    %01000000_00000010
  2374.     .dc.w    %01000000_00000010
  2375.     .dc.w    %01000000_00000010
  2376.  
  2377.     .dc.w    %01000000_00000010
  2378.     .dc.w    %01000000_00000010
  2379.     .dc.w    %01000000_00000010
  2380.     .dc.w    %01000000_00000010
  2381.     .dc.w    %01000000_00000010
  2382.     .dc.w    %01000000_00000010
  2383.     .dc.w    %01111111_11111110
  2384.     .dc.w    %00000000_00000000
  2385.  
  2386.                 * âpâ^ü[âôéP
  2387.     .dc.w    %00000000_00000000
  2388.     .dc.w    %01111111_11111110
  2389.     .dc.w    %01000000_00000010
  2390.     .dc.w    %01000000_00000010
  2391.     .dc.w    %01000000_00000010
  2392.     .dc.w    %01000000_00000010
  2393.     .dc.w    %01000000_00000010
  2394.     .dc.w    %01000000_00000010
  2395.  
  2396.     .dc.w    %01000000_00000010
  2397.     .dc.w    %01000000_00000010
  2398.     .dc.w    %01000000_00000010
  2399.     .dc.w    %01000000_00000010
  2400.     .dc.w    %01000000_00000010
  2401.     .dc.w    %01000000_00000010
  2402.     .dc.w    %01111111_11111110
  2403.     .dc.w    %00000000_00000000
  2404.  
  2405.  
  2406.     .bss
  2407.     .even
  2408. _ms_pos:            * â}âEâXâJü[â\âïé╠ì└òW
  2409. _ms_pos_x:    .ds.w    1
  2410. _ms_pos_y:    .ds.w    1
  2411. old_ms_pos:            * Æ╝æOé╠â}âEâXâJü[â\âïé╠ì└òW
  2412. old_ms_pos_x:    .ds.w    1
  2413. old_ms_pos_y:    .ds.w    1
  2414. old_mouse_pat:    .ds.w    1    * Æ╝æOé╠â}âEâXâJü[â\âïâpâ^ü[âôö╘ìå
  2415.  
  2416. in_vdisp:    .ds.b    1    * vdisp Åêù¥ÆåâtâëâO
  2417. vdisp_flag:    .ds.b    1    * vdisp é▓é╞é╔âNâèâAé│éΩéΘ
  2418. last_op:    .ds.b    1    * Æ╝æOé╠â}âEâXæÇì∞ôαùe
  2419. last_op_counter:.ds.b    1
  2420. repeat_counter:    .ds.b    1    * âLü[âèâsü[âgùp
  2421.  
  2422.     .even
  2423.  
  2424.